Windows 崩溃转储完成通知

Windows 崩溃转储完成通知,windows,process,analysis,crash-dumps,Windows,Process,Analysis,Crash Dumps,我正在强行破坏进程并试图分析崩溃转储。 我面临崩溃进程和崩溃转储生成(flush)之间的竞争条件 如果崩溃转储太大,则需要一些cputime,windows调试器(或watson)中是否有任何回调函数可以告知崩溃转储完成情况 或者是否有任何机制可以强制刷新崩溃转储并开始分析 我不是在寻找基于民意调查的解决方案 添加WER注册表项 使过程崩溃 运行您自己编写的工具,该工具 3a)查找werfault.exe进程和 3b)加入该进程(等待它完成) 分析转储文件 步骤3b不使用轮询。进程是一个得到信号

我正在强行破坏进程并试图分析崩溃转储。 我面临崩溃进程和崩溃转储生成(flush)之间的竞争条件

如果崩溃转储太大,则需要一些cputime,windows调试器(或watson)中是否有任何回调函数可以告知崩溃转储完成情况

或者是否有任何机制可以强制刷新崩溃转储并开始分析

我不是在寻找基于民意调查的解决方案

  • 添加WER注册表项
  • 使过程崩溃
  • 运行您自己编写的工具,该工具 3a)查找werfault.exe进程和 3b)加入该进程(等待它完成)
  • 分析转储文件
  • 步骤3b不使用轮询。进程是一个得到信号的同步对象

    请注意,在崩溃之前,步骤3a将不起作用,如果崩溃转储很小,werfault.exe可能已经退出,因此它可能会永远等待。要绕过此问题,您可能希望将应用程序注册为werfault.exe的调试器,该调试器在内部将参数转发给werfault.exe,然后等待直到完成

    然后,完整的序列如下所示:

  • 添加WER注册表项
  • 为werfault.exe添加调试器项
  • 使过程崩溃
  • 应用程序将运行,而不是werfault.exe。 4a)启动werfault.exe以创建转储和 4b)加入该进程(等待它完成)
  • 如果不想永久删除调试器条目,可以将其删除
  • 分析转储文件

  • 最后,我想说,通过一些实施工作,您可以实现您的目标。问题是:这将节省多少秒,实施需要多少小时?

    这没有任何意义,没有什么需要“刷新”。当MiniDumpWriteDump()返回时,转储就完成了。好吧,我不是调用MiniDumpWriteDump(),我只是将注册表项放在windows错误报告下进行崩溃转储并使进程崩溃。我希望windows会为相应的进程转储崩溃。此外,如果windows调用MinidumpWriteDomainp(),我不确定如何跟踪它。在windows错误报告(wer)下添加与崩溃转储2对应的注册表项。使给定pid 3的进程崩溃。等待操作系统自动生成崩溃转储???(这就是问题所在)4。分析崩溃转储文件我的一个解决方案是使用process.HasExited轮询机制等待进程退出。