它开始良好,但在符号搜索中保持阻塞。
它在寻找什么?您可以执行“!sym noise”来打开有关符号加载的嘈杂输出。不过,它不应该永远阻塞——它最终应该超时。如果您修复符号路径,那也会有所帮助。您可以将符号路径设置为空,然后不可能阻止从任何地方加载符号。
关于使用进程名称生成转储,我的一位同事(Jeremy)在 cdb/ntsd 命令行上提出了这个建议:
-c ".foreach( obj { lm 1m a @$exentry; } ) { .dump /m /u ${obj}.dmp;.dump /ma /u ${obj}.dmp; }; q"
他还说“确保你使用@$exentry 而不仅仅是 $exentry,否则它会尝试符号解析并破坏你的 for 循环。”
但更简单的方法可能是使用 Windows 错误报告 (WER) LocalDumps 功能:
http://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx
代替具有进程名称的转储文件,将有一个包含进程名称的目录,其中包含转储文件,这可能会满足您的需求。要获得转储中的最大信息,请将 DumpType 设置为 0,并将 CustomDumpFlags 设置为 0x1B65。
请注意,此功能纯粹用于配置本地转储:“这些转储的配置和控制独立于 WER 基础架构的其余部分。即使 WER 被禁用或用户取消 WER 报告,您也可以使用本地转储收集。本地转储可能与发送给 Microsoft 的转储不同。”
另请注意,LocalDumps 不支持托管进程。