如何获得使用 Visual Studio 2005 开发的 c++ 应用程序的完整调用堆栈?我想要一个完整的调用堆栈,包括系统库中的代码。
我是否必须更改 Visual Studio 中的某些设置,还是必须安装其他软件?
如何获得使用 Visual Studio 2005 开发的 c++ 应用程序的完整调用堆栈?我想要一个完整的调用堆栈,包括系统库中的代码。
我是否必须更改 Visual Studio 中的某些设置,还是必须安装其他软件?
获取所有项目依赖项的调试信息。这在项目属性的“配置属性 -> C/C++ -> 常规”部分下指定。
在菜单上,转到“工具 -> 选项”,然后选择“调试 -> 符号”。
添加指向 Microsoft 的免费符号服务器“symsrv symsrv.dll c:\symbols* http://msdl.microsoft.com/downloads/symbols ”的新符号位置(文件夹图标)
在本地的某个地方填写“缓存符号”字段,这样您就不会一直上网。
同意 Clay,但对于 Symbols Server,您应该从“Debugging Tools For Windows”获取最新的 symsrv.DLL,这是一个免费的 Microsoft 下载。
(由于您明确询问需要下载什么,我想您还没有)
或者,可选(假设未安装 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