调试崩溃转储:根据VS2010,来自同一构建事件的二进制文件和符号文件不匹配

时间:2012-01-19 21:01:22

标签: visual-studio-2010 debugging crash-dumps

我收到了客户的故障转储文件,我正在尝试使用VS2010调试转储文件。我已经检索了我们用于构建的源代码以及生成的符号文件,并且我已经为VS提供了包含它们的目录的路径;一切似乎都到位了。但是,当我尝试调试时,VS报告.exe或该目录中包含的任何.dll都没有“匹配的二进制文件”。我使用chkmatch来比较一些二进制文件和符号文件,并报告它们匹配,时间戳和签名等等。我在网上搜索过,似乎没有人像我遇到的那样遇到麻烦,我发现的所有解决方案都是我已经完成的事情。

希望我忽略了一些简单的事情。

我错过了什么?如何确保VS将二进制文件与符号文件匹配?

2 个答案:

答案 0 :(得分:1)

您可以使用WinDbg

  1. 下载该工具(http://msdn.microsoft.com/en-us/windows/hardware/gg463016,您可以使用版本6.11.1.404以避免下载整个SDK)并安装它。

  2. 启动WinDbg并加载转储文件(文件>打开崩溃转储)。

  3. 指定符号的位置(文件>符号文件路径)。
  4. 激活符号加载时的痕迹(在命令提示符下出现@ sym noisy)
  5. 卸载所有符号(.reload / u在命令提示符下)。
  6. 为您遇到问题的模块加载符号(在命令提示符下为ld)。
  7. 引擎会告诉您加载符号的位置以及它不匹配的原因。
  8. 您还可以获得转储文件(lm vm)中包含的模块的详细信息,包括模块的时间戳。
  9. 希望这有帮助。

答案 1 :(得分:0)

要检查的另一件事:如果同一产品的其他构建版本的二进制文件和符号位于符号路径中,则会出现问题。

VS(我使用2015年)似乎没有搜索所有路径并选择正确的文件 - 我必须添加特定于崩溃转储的符号路径我调试并移动这些"向上"在符号路径列表中首先找到并使用它们。