如何在不在Windows 7上显式运行AdPlus的情况下在崩溃时创建进程小型转储?

mar*_*ark 5 .net crash debugging adplus windows-7

我有一个.NET进程,有时会在某些第三方库的本机代码中使用AccessViolationException失败.

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

现在,我知道如何从ADPLus中运行该流程,或者如何将其附加到已经运行的流程.但它需要明确地运行ADPLus.

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

这意味着,运行aaaa.exe时会被运行ADPlus替换为某些标志,这些标志会使用相应的命令行选项生成aaaa.exe.

我知道Windows中有图像执行标志,这样做,但我不知道细节.

谢谢.

EDIT1

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

mar*_*ark 2

没关系,找到了。

  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