【发布时间】: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