2010-12-30 10 views
3

Java/C#例外でスタック/関数トレースが提供されているという事実は本当に便利です。 C++でこれを行う便利な方法はありますか?または、すべてのメソッド/関数に余分なデータを書き込む必要がありますか?C++例外でスタックトレースを取得する

+0

Duplicate ??:http://stackoverflow.com/questions/3222890/call-stack-for-exceptions-in-c – bcsanches

答えて

1

ほとんどのデバッガは、例外がスローされるたびに(例外またはハンドラがない例外のいずれか)プログラムを一時停止するように設定できるため、呼び出しスタックを観察できます。

また、コードで制御するクラスの例外がスローされた場合は、you can put code for dumping the call stack in those classes constructorsとなります。

+0

これは、デバッグ中ではなく、野生で例外を記録するためのものです。 –

+0

@ジョン、2番目の文 – Muggen

+0

@ジョン:2番目の段落はそれについてです - 私がリンクしているすべての質問はそれについてです。 – sharptooth

0

例外にメタデータを追加することを検討している場合は、boost exception handlingを使用することを検討してください。 boost :: exceptionは、スローされた後で例外に情報を追加することを可能にします。

0

いくつかのOS APIはスタックトレースを提供していますが、Windows APIにStackWalk64などがあり、スタックトレースを行うことができます。

しかし、そのようなことに頼ることができない場合は、デバッグビルドを出荷するか、手動で行うしかありません。

関連する問題