【问题标题】:Debugging crash dump: binary and symbol files from same build event do not match according to VS2010调试故障转储:根据 VS2010,来自同一构建事件的二进制文件和符号文件不匹配
【发布时间】:2012-01-19 21:01:21
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

你可以使用WinDbg

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

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

  3. 指定符号的位置(文件 > 符号文件路径)。
  4. 在符号加载时激活跟踪(命令提示符下的 !sym 噪声)
  5. 卸载所有符号(.reload /u 在命令提示符下)。
  6. 为您遇到问题的模块加载符号(在命令提示符下使用 ld)。
  7. 引擎会告诉您它在哪里加载符号以及为什么它不匹配。
  8. 您还可以获得转储文件 (lm vm) 中包含的模块的详细信息,包括模块的时间戳。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 2021-01-21
      • 2021-11-09
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多