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