【问题标题】:How to create process mini dump on crash without running AdPlus explicitly on Windows 7?如何在崩溃时创建进程迷你转储而不在 Windows 7 上显式运行 AdPlus?
【发布时间】:2010-11-08 10:28:31
【问题描述】:

我有一个 .NET 进程,有时会在某些 3rd 方库的本机代码中出现 AccessViolationException 失败。

当这种情况发生时,我希望有完整的内存迷你转储。我已阅读此页面 - http://support.microsoft.com/kb/931673,“收集用户模式转储”部分并按照文章说明配置注册表。但是,当崩溃发生时,会创建一个非常小的报告 - 看不到 *.mdmp 文件。

现在,我知道如何在 ADPLus 中运行该进程,或者如何使其附加到已经运行的进程。但它需要显式运行 ADPLus。

我想知道如何将 Windows 配置为自动运行 ADPlus,每次我启动有问题的进程时,无论它是如何启动的 - 从 msbuild、双击、从控制台脚本等...

意思是,当运行 aaaa.exe 时,会被运行带有某些标志的 ADPlus 替换,这些标志会生成带有相应命令行选项的 aaaa.exe。

我知道windows中有图像执行标志,可以做到这一点,但我不知道细节。

谢谢。

EDIT1

保留命令行参数很重要,因此如果 aaa.exe 使用标志运行,那么从调试器运行 aaa.exe 时当然也应该如此。

【问题讨论】:

  • 配置为进行本地转储的 Windows 错误报告 (WER) 有什么好处? msdn.microsoft.com/en-us/library/windows/desktop/…
  • 没有,但是这个问题是3年前问的,当时我可能还不知道WER。
  • @ThomasW。在您提供的链接中:“此功能不支持执行自己的自定义崩溃报告的应用程序,包括 .NET 应用程序”
  • @PeterRitchie:WER LocalDumps 适用于 .NET 应用程序。它只是不适用于具有未处理异常处理程序的 .NET 应用程序。他的应用程序没有未处理的异常处理程序(否则 AdPlus 也无法工作),因此 LocalDumps 在这种情况下可以工作。

标签: .net debugging windows-7 crash adplus


【解决方案1】:

没关系,找到了。

  1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options下创建一个以进程命名的密钥(如aaa.exe)
  2. 添加一个字符串值 Debugger,其值为 ADPlus -crash -mss YourSymbolCacheFolderPath -MiniOnSecond -quiet -o YourDumpFolderPath -sc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-28
    • 2011-06-06
    • 2013-01-20
    • 1970-01-01
    • 2011-03-21
    • 2011-03-16
    • 2010-12-05
    • 2011-12-06
    相关资源
    最近更新 更多