我试图使用MiniDumpWriteDump生成一个最小的最小值,在这里我可以追溯地将符号附加到一个pdb中。目前,这使用MiniDumpWithFullMemory,但产生一个非常大的转储文件。
使用MiniDumpNormal生成转储会产生一个小文件,并给出带有偏移的堆栈跟踪,但我无法让Visual或WinDbg加载这些符号。视觉工作室刚刚告诉我
二进制文件不是使用调试信息构建的。
WinDbg告诉我:
错误:找不到符号文件。默认情况下导出app.exe符号。
我尝试过几个标志组合,但不使用MiniDumpWithFullMemory无法加载符号。生成最小可能转储的标志集是什么,它可以解析堆栈跟踪的符号?
可执行文件使用调试信息(/Zi /DEBUG)构建,将调试器附加到正在运行的进程中加载符号,将调试器附加到崩溃进程(在WER触发时)加载符号,使用MiniDumpWithFullMemory生成转储也加载符号,但其他转储类型不加载符号。
发布于 2017-04-11 17:33:55
这个问题中最令人困惑的部分是,除了减少的微型转储之外,所有调试都是如何正确工作的。对可执行文件的检查发现了这个问题:
symchk app.exe /v 垃圾桶,/headers,app.exe,grep
显示在exe中没有pdb信息。在检查构建系统时,我发现了一个额外的构建步骤,该步骤使用以下方法嵌入清单:
MT.exe -manifest C:\app.exe.manifest -outputresource:C:\app.exe;1
导致pdb信息被删除。
删除此生成步骤将保留调试信息,并允许从MiniDumpNormal转储加载符号。
https://stackoverflow.com/questions/43288075
复制相似问题