如何在Visual Studio 2005中获得完整的调用堆栈?

时间:2008-09-21 13:32:12

标签: c++ visual-studio debugging callstack visual-c++-2005

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

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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:0)

同意Clay,但对于Symbols Server,你应该从免费的微软下载“Debugging Tools For Windows”获得最新的symsrv.DLL。

(因为你明确询问了你需要下载的内容,我认为你还没有下载)

答案 2 :(得分:0)

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

windbg [.exe] -pn program.exe

windbg [.exe] -p process_id

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

〜0

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

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

发出一个调用堆栈命令:

kb的