如何在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