2

通常assert(0);、C++ コードに を挿入し、Windbg を起動し、F5 キーを押して Enter を押すkと、スタック トレースが取得されます。次に、マウスでコピーして貼り付けて終了する必要があります。

しかし、私はこれを自動化したい。GUI を手動で使用せずに、スタック トレースを取得してテキスト ファイルに書き込む方法はありますか?

4

2 に答える 2

2

まず、GUIからの出力を次の.logopenように使用してテキストファイルに書き込むことができます。

.logopen c:\dump\myLog.txt

これにより、すべてがこの場所にダンプされます。呼び出し.logcloseてログを閉じ、1行で次のようにします。

.logopen c:\dump\myLog.txt; k; .logclose

次に、本当にGUIを使用したくない場合は、コマンドラインバージョンのwindbg、cdbがあります。次のようないくつかのコマンドでこれを実行できます。

cdb -log c:\data\myLog.txt -lines -pn myApp.exe -c ".symfix;.reload;k;qd"

これにより、コールスタックの行番号がオンになり、ログに出力され、名前を使用してプロセスにアタッチされてから、MSのシンボルサーバーを修正し、リロードし、コールスタックをダンプし、終了してデタッチするコマンドを二重引用符で囲んで実行します。

于 2013-02-22T20:42:09.780 に答える
0

これ以上デバッグしようとせず、スタック トレースを取得しようとしていると仮定すると、この関数を呼び出して出力をファイルに書き込むだけです。

CaptureStackBackTrace ( http://msdn.microsoft.com/en-us/library/bb204633(VS.85).aspx?ppud=4 )

于 2013-02-26T19:28:24.280 に答える