【问题标题】:print callstack of a thread (c++), StackWalker or not?打印线程的调用堆栈(c ++),StackWalker与否?
【发布时间】:2011-10-11 06:56:09
【问题描述】:

需要通过线程句柄打印 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

【问题讨论】:

    标签: c++ winapi stack-trace callstack debug-symbols


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 2010-11-28
      • 2020-08-28
      • 2010-11-23
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      相关资源
      最近更新 更多