2011-07-22 19 views
2

C++アプリケーションスレッドのコールスタックをスレッドハンドルで出力する必要があるため、以前のstackoverflowの回答で言及したStackWalkerを参照してください。スレッドの呼び出しスタック(C++)、StackWalkerかどうか?

ただし、the StakWalker codeの日付は2005年です。それ以降は何か変わったと思います。

私がコンパイルして実行すると、エラーが発生し(下)、出力が不完全でエラーとして切り捨てられているようです。テストはより多くのテストケースを出力します。

誰かが更新されたコールスタック印刷コードまたは公開された別のコールスタック印刷コードを持っていますか?

e:\boris\stackwalker\stackwalker\main.cpp (31): Func5 
e:\boris\stackwalker\stackwalker\main.cpp (32): Func4 
e:\boris\stackwalker\stackwalker\main.cpp (33): Func3 
e:\boris\stackwalker\stackwalker\main.cpp (34): Func2 
e:\boris\stackwalker\stackwalker\main.cpp (35): TestCurrentThread 
e:\boris\stackwalker\stackwalker\main.cpp (139): main 
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (582): __tmainCRTStartup 
f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (399): mainCRTStartup 
VVVVV 
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 7C817077) 
^^^^^ 
7C817077 (kernel32): (filename not available): RegisterWaitForInputIdle 

答えて

4

これはCodeProjectで提供されているStackWalkerサンプルのバグではありません。シンボルファイルがないためです。お使いのOS用のシンボルファイル(デバッグシンボル)をダウンロードしてインストールしてから、再試行してください。

http://msdn.microsoft.com/en-us/windows/hardware/gg463028