2011-10-03 4 views
9

機能のスタックトレースをデバッグログに記録して、欠陥の診断に役立てる方法が必要です。問題は、WindowsとLinuxでC++を使用して実装する必要があることです。少し研究した後実行時にコールスタックをロギングするライブラリ(Windows/Linux)

は、私がいることを発見した:Windowsの実装では

  • を、私はStackWalk64 API関数と家族を使用することができます。
  • Linuxの場合、私はlibunwindが素晴らしいと判断しました。
  • それとも、私が仕事を始める前のglibcのbacktrace

を使用することができ、これは正しい方法で、助けることができ、既に書かれたマルチプラットフォームのライブラリーがあるかどうか依頼する場合、私はいくつかのアドバイスをしたいです。私はこれを必要とする最初のプログラマーではないと思う。 :)

+0

+1でご覧になれます。 –

答えて

3

Google Breakpadは、クラッシュダンプをフィールドから戻したい場合にこのすべてを処理します。

+1

クラッシュダンプにはもっと必要な情報が含まれています。そして後処理する必要があります - これは大きな不便です。私は単に、スタックトレースを文字列または文字列として必要とします。 – vlg789

+0

あなたはあなたのアプリと一緒にプライベートPDBを出荷したいと思っていない限り、後処理をしなければならず、ミニダンプは大きなJPEGのサイズの周りにあります。 –

+0

プライベートPDBを出荷することは問題ではありません。 – vlg789

1

何年か前、私はこれを書いた:http://drdobbs.com/cpp/191100567

基本的には、いくつかのマクロは例外スタックアンワインドが発生した場所を記録スローされます。

フレームワークの最新バージョンは、Imebraライブラリ(http://imebra.com)

+0

あなたはFUNCTION_START/FUNCTION_ENDマクロを参照していますか? – vlg789

+0

はい。彼らは例外の通過を捕まえて、再ログインし、ログに記録します。 –

関連する問題