MS VC++ で答えを探しています。
大規模な C++ アプリケーションをデバッグする場合、残念ながら C++ 例外が非常に広範囲に使用されます。実際に必要な時間よりも少し遅れて例外をキャッチすることがあります。
擬似コードの例:
FunctionB()
{
...
throw e;
...
}
FunctionA()
{
...
FunctionB()
...
}
try
{
Function A()
}
catch(e)
{
(<--- breakpoint)
...
}
デバッグ時にブレークポイントで例外をキャッチできます。FunctionA()
しかし、例外がor FunctionB()
、または他の関数で発生したかどうかを追跡することはできません。(広範な例外の使用と上記の例の巨大なバージョンを想定しています)。
私の問題に対する 1 つの解決策は、コール スタックを決定し、例外コンストラクターで(つまり、キャッチされる前に) 保存することです。しかし、これには、この基本例外クラスからすべての例外を派生させる必要があります。また、多くのコードが必要になり、プログラムの速度が低下する可能性があります。
作業が少なくて済む簡単な方法はありますか? 大規模なコード ベースを変更する必要はありませんか?
他の言語でこの問題に対するより良い解決策はありますか?