查看内存转储的调用堆栈时,如何在VS中指定源代码目录?
时间:2020-03-06 15:03:41 来源:igfitidea点击:
我正在分析一个已创建的.dmp文件,我有一个调用堆栈,该堆栈给了我很多信息。但是我想双击调用堆栈,并将其带到源代码。
我可以在调用堆栈上单击鼠标右键,然后选择符号设置。在此处可以将位置放置到PDB。但是源代码目录没有选项。
解决方案
加载PDB之后,手动导航到与当前执行位置匹配的源文件。 PDB包含构建其关联二进制文件的源文件的路径和文件名,并且当调试器注意到正在显示的文件名和与当前二进制文件位置关联的文件名匹配时,我怀疑调试器足够聪明。
不幸的是,源代码目录被硬编码到pdb中,但是,如果我们知道所需的文件夹,则可以使用符号链接,结点的Windows概念。
我使用的是Junction Link Magic工具
阅读有关如何在站点上设置源服务器(aka SrcSrv)集成的文章。
我花了一些时间来遵循以下步骤来建立我们的代码库,现在我们可以在过去6个月内从任何软件版本中提取一个.dmp文件...获取带有符号的堆栈跟踪...并查看确切的信息调试器中的源代码行。由于这些步骤已集成到我们的自动化构建中,因此现在几乎没有任何开销。
我确实需要为ClearCase编写一个自定义索引器,但是它们已经存在针对Perforce,TFS以及其他的索引器。
值得注意的是,VS2005中对.dmp的支持有些不稳定。.在VS2008中它要稳定得多。
除了我们自己的符号服务器之外,我们还需要将Visual Studio配置为从此处获取MS产品的符号:
http://msdl.microsoft.com/download/symbols
某些地方对此进行了描述,例如Windows调试工具站点上。
Windbg允许我们设置与PDB路径相同的源路径。