如何以编程方式检测应用程序已在Windows中崩溃?

时间:2017-11-17 04:31:16

标签: python windows crash

我正在运行一个启动许多应用程序的Python脚本。我需要一种方法来检测发布的应用是否已经崩溃。某些应用有内部崩溃处理

The app has crashed and has a dialog box saying app has crashed

如何检测崩溃?

1 个答案:

答案 0 :(得分:2)

如果他们有内部崩溃处理,则无法检测到。应用程序将处理错误并正常退出。如果您将自己作为调试器附加,则甚至无法检测到这一点。

原因是exception dispatching (MSDN)

  1. 调试器获知有关异常的信息。这被称为第一次机会异常。但是,这可能是“正常的”,例如FileNotFound,应用程序所期望的。
  2. Windows正在寻找想要处理异常的人。这可以是Python应用程序的except块,C#或C ++中的catch块,甚至是一般的“未处理的异常处理程序”。
  3. 如果没有人想要处理该应用程序,则会再次通知调试器。这次,异常被标记为第二次机会异常。这意味着应用程序将在下一次崩溃。
  4. 您希望在步骤3中获得通知,但是,应用程序已经在第2步中停止了该过程。