是否可以编写看门狗进程来捕获应用程序崩溃?

Is it possible to write a watchdog process to catch application crashes?

我们正在开发一款 几乎没有任何错误的视频游戏 与任何应用程序一样,存在有时会导致严重崩溃的错误。不幸的是,由于我们使用的是封闭源代码中间件 (Unity 3D),到目前为止我们编目的许多崩溃都无法解决或解决它们。

虽然我们希望并等待中间件开发人员解决问题,但我们想看看是否有可能至少让崩溃信息更丰富和用户友好。例如 - 我们的用户可能遇到的罕见崩溃之一是某些 AV 产品导致某种线程上下文竞争条件并导致游戏爆炸。我们希望能够检测到崩溃和错误签名,并向用户提供 link 到我们的 wiki 或论坛,了解如何解决它(如果可能)。

是否可以编写轻量级看门狗进程或父进程来响应 Windows 平台上的崩溃事件?

在崩溃过程之外收集故障转储是必不可少的。您永远不知道未处理的异常处理程序是否受到影响。但还有其他选择:

  • 启用 WER LocalDumps 并为存储转储的目录编写看门狗 (FileSystemWatcher)。
  • 配置 AeDebug 并在崩溃时附加您自己的调试器。