如何以编程方式检测应用程序在 Windows 中崩溃?
How to programmatically detect an application has crashed in Windows?
我是 运行 一个启动多个应用程序的 Python 脚本。我需要一种方法来检测启动的应用程序是否已崩溃。一些应用程序有内部崩溃处理
如何检测崩溃?
如果他们有内部崩溃处理,就不可能检测到。应用程序将处理错误并正常退出。如果您将自己附加为调试器,您甚至无法检测到这一点。
原因是exception dispatching (MSDN):
- 调试器收到有关异常的通知。这称为第一次机会异常。但是,这可能是 "normal",例如FileNotFound,这是应用程序所期望的。
- Windows正在寻找想要处理异常的人。这可以是 Python 应用程序的
except
块,C# 或 C++ 中的 catch
块,甚至是一般的 "unhandled exception handler".
- 如果没有人想要处理该应用程序,调试器会再次收到通知。这次,异常被标记为第二次机会异常。这意味着应用程序接下来会崩溃。
您希望在第 3 步中获得通知,但是,应用程序已在第 2 步中停止该过程。
我是 运行 一个启动多个应用程序的 Python 脚本。我需要一种方法来检测启动的应用程序是否已崩溃。一些应用程序有内部崩溃处理
如何检测崩溃?
如果他们有内部崩溃处理,就不可能检测到。应用程序将处理错误并正常退出。如果您将自己附加为调试器,您甚至无法检测到这一点。
原因是exception dispatching (MSDN):
- 调试器收到有关异常的通知。这称为第一次机会异常。但是,这可能是 "normal",例如FileNotFound,这是应用程序所期望的。
- Windows正在寻找想要处理异常的人。这可以是 Python 应用程序的
except
块,C# 或 C++ 中的catch
块,甚至是一般的 "unhandled exception handler". - 如果没有人想要处理该应用程序,调试器会再次收到通知。这次,异常被标记为第二次机会异常。这意味着应用程序接下来会崩溃。
您希望在第 3 步中获得通知,但是,应用程序已在第 2 步中停止该过程。