Я ищу ответ в MS VС++.
При отладке большого приложения на С++, которое, к сожалению, имеет очень широкое использование исключений С++. Иногда я получаю исключение чуть позже, чем я действительно хочу.
Пример в псевдокоде:
FunctionB()
{
...
throw e;
...
}
FunctionA()
{
...
FunctionB()
...
}
try
{
Function A()
}
catch(e)
{
(<--- breakpoint)
...
}
Я могу поймать исключение с точкой останова при отладке. Но я не могу отследить, если исключение произошло в FunctionA()
или FunctionB()
, или какая-либо другая функция. (Предполагая широкое использование исключений и огромную версию приведенного выше примера).
Одним из решений моей проблемы является определение и сохранение стека вызовов в конструкторе исключений (т.е. до его обнаружения). Но это потребовало бы, чтобы я получил все исключения из этого базового класса исключений. Это также потребует большого количества кода и, возможно, замедлит мою программу.
Есть ли более простой способ, который требует меньше работы? Без необходимости менять мою большую базу кода?
Есть ли лучшие решения этой проблемы на других языках?