4

如何获得使用 Visual Studio 2005 开发的 c++ 应用程序的完整调用堆栈?我想要一个完整的调用堆栈,包括系统库中的代码。

我是否必须更改 Visual Studio 中的某些设置,还是必须安装其他软件?

4

3 回答 3

6
  1. 获取所有项目依赖项的调试信息。这在项目属性的“配置属性 -> C/C++ -> 常规”部分下指定。

  2. 在菜单上,转到“工具 -> 选项”,然后选择“调试 -> 符号”。

  3. 添加指向 Microsoft 的免费符号服务器“symsrv symsrv.dll c:\symbols* http://msdl.microsoft.com/downloads/symbols ”的新符号位置(文件夹图标)

  4. 在本地的某个地方填写“缓存符号”字段,这样您就不会一直上网。

于 2008-09-21T13:56:27.790 回答
0

同意 Clay,但对于 Symbols Server,您应该从“Debugging Tools For Windows”获取最新的 symsrv.DLL,这是一个免费的 Microsoft 下载。

(由于您明确询问需要下载什么,我想您还没有)

于 2008-09-21T22:54:37.840 回答
0

或者,可选(假设未安装 Visual Studio),获取Windows 调试工具的副本,安装并从调试器 (windbg.exe) 中运行您的应用程序,或者将其附加到已运行的应用程序:

windbg[.exe] -pn program.exe

windbg[.exe] -p process_id

在要观察堆栈跟踪的点处中断调试器 (Ctrl+Break)。切换到感兴趣的线程(很可能是执行的主线程):

~0s

修复系统模块的符号(如果可用,也可能用于应用程序):

* 修复应用程序的符号
.sympath path_to_app_symbols
* 配置调试器将下载和存储系统符号
的位置 .symfix+ path_where_system_symbols_will_be_stored
* 强制调试器重新加载符号
.reload

发出调用堆栈命令:

KB
于 2008-10-01T19:41:29.053 回答