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

时间:2020-03-06 14:30:23  来源:igfitidea点击:

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

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

解决方案

  • 获取所有项目依赖项的调试信息。这是在项目属性的"配置属性-> C / C ++->常规"部分下指定的。
  • 在菜单上,转到"工具->选项",然后选择"调试->符号"。
  • 添加一个新的符号位置(文件夹图标),该位置指向Microsoft的免费符号服务器symsrvsymsrv.dllc:\ symbols * http://msdl.microsoft.com/downloads/symbols
  • 在本地的某些地方填写"缓存符号"字段,这样我们就不会一直上网。

同意Clay,但是对于Symbols Server,我们应该从" Windows调试工具"获得免费的Microsoft下载,最新的symsrv.DLL。

(由于我们明确询问需要下载什么,因此我认为我们还没有下载)

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

windbg[.exe] -pn program.exe

or

windbg[.exe] -p process_id

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

~0s

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

*  fix up symbols for app

.sympath path_to_app_symbols

*  configure where debugger will download and store system symbols

.symfix+ path_where_system_symbols_will_be_stored

* force debugger to reload symbols

.reload

发出调用堆栈命令:

kb