【问题标题】:Resolving symbols in windows Minidump在 Windows Minidump 中解析符号
【发布时间】:2017-09-03 10:13:10
【问题描述】:

我正在尝试使用 MiniDumpWriteDump 生成一个最小的 Minidump,我可以在其中使用 pdb 追溯附加符号。目前这使用 MiniDumpWithFullMemory 工作,但会产生一个非常大的转储文件。

使用 MiniDumpNormal 生成转储会生成一个小文件并提供带有偏移量的堆栈跟踪,但我无法让 Visual Studio 或 WinDbg 加载符号。 Visual Studio 只是告诉我

二进制文件不是使用调试信息构建的

WinDbg 告诉我:

错误:找不到符号文件。默认导出符号 对于 app.exe。

我尝试了几种标志组合,但如果不使用 MiniDumpWithFullMemory,则无法加载符号。生成可以解析堆栈跟踪符号的最小可能转储的标志集是什么?

可执行文件是使用调试信息 (/Zi /DEBUG) 构建的,将调试器附加到正在运行的进程会加载符号,将调试器附加到崩溃的进程(在 WER 触发时)会加载符号,并使用 MiniDumpWithFullMemory 生成转储也加载符号,但其他转储类型不加载符号。

【问题讨论】:

  • 这不是那个问题的重复,它是用调试信息构建的,并且会在使用 MiniDumpWithFullMemory 转储时加载符号。
  • 符号被延迟加载也称为延迟加载它与完整的普通迷你或内核无关lloaded模块列表是流所以你有一些其他问题确保你构建你的调试版本以及带有调试信息的发布版本。确保您在 priject 的命令行中看到 /zi 如果 windbg 说没有符号默认为导出符号,则确保生成 pdb,这意味着您的二进制文件是在没有符号的情况下构建的。 minidump 只是原样丢弃它
  • 您是否还设置了可执行搜索路径?一些小型转储格式不包含可执行文件,您需要在分析转储时提供它们。
  • @snoone 在 WinDbg 中设置图像文件路径给了我 *** 警告:无法验证 app.exe 的时间戳 *** 错误:模块加载已完成,但无法为 app.exe 加载符号

标签: c++ windows windbg minidump


【解决方案1】:

这个问题最令人困惑的部分是所有调试如何正常工作,除了减少的小型转储。检查可执行文件发现了问题:

symchk app.exe /v

dumpbin /headers app.exe | grep pdb

显示exe中没有pdb信息。在检查我的构建系统时,我发现了一个额外的构建步骤,它使用以下方法嵌入清单:

MT.exe -manifest C:\app.exe.manifest -outputresource:C:\app.exe;1

导致 pdb 信息被剥离的原因。

删除此构建步骤会保留调试信息并允许从 MiniDumpNormal 转储中加载符号。

【讨论】:

  • 这是清单工具令人惊讶的副作用。出于好奇,当您尝试在调试器中打开转储时,您是否尝试将 exe、minidump 和 pdb 都放在同一个目录中?使用 chkmatch 来查看它是否认为 exe 和 pdb 文件实际上匹配也可能很有趣。
  • @AdrianMcCarthy 在使用将 pdb/exe/dmp 放在同一目录中的清单 exe 时不会加载符号。 Chkmatch 给出:Executable: TimeDateStamp: 58ed3297 Debug info: 2 ( CodeView ) TimeStamp: 58ed3297 Characteristics: 0 MajorVer: 0 MinorVer: 0 Size: 92 RVA: 01333e28 FileOffset: 01332a28 CodeView signature: 0\=A Debug info: 12 ( Unknown ) TimeStamp: 58ed3297 Characteristics: 0 MajorVer: 0 MinorVer: 0 Size: 20 RVA: 01333e84 FileOffset: 01332a84 Debug information file: Format: PDB 7.00 Result: unmatched (reason: incompatible debug information formats)
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多