我知道如何使用ADPlus或DebugDiag生成故障转储文件,但是我想知道是否可以在不安装这些工具的情况下在客户的计算机上执行此操作…具体来说,我希望能够配置我的应用程序(在严重失败的情况下,使用注册表值生成崩溃转储。更具体地说,我需要能够从C#应用程序执行此操作,但是如果有必要,我不介意P / Invoke’ing。谢谢!
请注意,从“失败”进程(甚至线程)内部创建一个小型转储并非易事或可能不准确(也是MiniDumpWriteDump函数的备注)。
此外,如果您的过程非常生气,可能需要编写故障转储,那么整个情况通常会很费劲,以至于即使尝试创建故障转储也可能导致另一次崩溃(诸如搁置的情况,但是甚至难以从当前流程中“捕获”)。
如果无法在客户端的系统上安装单独的应用程序,那么您可以做的“最好”的事情是启动一个外部进程(在紧急情况下也可能会失败!),并从当前进程中创建一个故障转储(请参阅Superassert。) NET(John Robbins)。您甚至可以走得更远,以便将外部二进制文件放入您的应用程序资源中,并在启动时从那里提取它(以最大程度地减少关键情况下的失败)到磁盘(如果您敢)。