gpt4 book ai didi

c++ - 解析 Windows Minidump 中的符号

转载 作者:行者123 更新时间:2023-11-30 05:14:49 29 4
gpt4 key购买 nike

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

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

Binary was not built with debug information

WinDbg 告诉我:

ERROR: Symbol file could not be found. Defaulted to export symbols for app.exe.

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

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

最佳答案

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

symchk app.exe /v

dumpbin /headers app.exe | grep pdb

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

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

这导致 pdb 信息被剥离。

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

关于c++ - 解析 Windows Minidump 中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43288075/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com