需要通过线程句柄打印C++应用程序线程的调用栈,我转向StackWalker,它在前面的stackoverflow答案中已经提到。

但是,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

最佳答案

这不是CodeProject提供的StackWalker示例的错误。这是因为缺少符号文件。下载并为您的操作系统安装符号文件(调试符号),然后重试。

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

09-06 12:43