当查看内存转储的调用堆栈时,如何在VS中指定源代码目录

how do I specify the source code directory in VS when looking at the call stack of a memory dump?

本文关键字:VS 源代码 内存 转储 堆栈 调用      更新时间:2023-10-16

我正在分析一个创建的.dmp文件,我有一个调用堆栈,它给了我很多信息。但我想双击调用堆栈,让它把我带到源代码。

我可以右键单击调用堆栈并选择符号设置。。在那里我可以把位置放在PDB上。但是源代码目录没有选项。

不幸的是,源代码目录被硬编码到pdb中,但如果您知道所需的文件夹,则可以使用符号链接、连接的windows概念。

我使用Junction Link Magic 工具

阅读这篇关于如何在您的站点上设置源服务器(也称为SrcSrv)集成的文章。

我花时间为我们的代码库遵循了这些步骤,现在我们可以从过去6个月内的任何软件构建中获取.dmp文件。。。获取带有符号的堆栈跟踪。。。并在调试器中查看确切的源代码行。由于这些步骤已集成到我们的自动化构建中,因此现在开销非常小。

我确实需要为ClearCase编写一个自定义索引器,但它们已经为Perforce、TFS和其他可能的索引器预先存在了。

值得注意的是,VS2005中对.dmp的支持有点不稳定。。它在VS2008中相当稳定。

除了您自己的符号服务器之外,您还需要配置Visual Studio来从这里获取MS产品的符号

http://msdl.microsoft.com/download/symbols

这在一些地方进行了描述,例如在"Windows调试工具"网站上。

Windbg允许您设置与PDB路径相同的源路径。

加载PDB后,手动导航到与当前执行位置匹配的源文件。PDB包含构建其关联二进制文件的源文件的路径和文件名,我怀疑调试器足够聪明,当它注意到显示的文件名和与当前二进制位置关联的文件名匹配时,它可以将事情挂起。