【问题标题】:How to programmatically detect an application has crashed in Windows?如何以编程方式检测应用程序在 Windows 中已崩溃?
【发布时间】:2017-11-17 04:31:16
【问题描述】:

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

如何检测崩溃?

【问题讨论】:

  • 你的目标平台是什么?
  • 也许您可以检查您的进程是否正在运行并做出相应的反应? See this question.
  • 是的,进程正在运行,因为异常由应用程序内部处理并显示一个对话框

标签: python windows crash


【解决方案1】:

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

原因是exception dispatching (MSDN):

  1. 调试器收到有关异常的通知。这称为第一次机会例外。但是,这可能是“正常的”,例如FileNotFound,这是应用程序所期望的。
  2. Windows 正在寻找想要处理异常的人。这可以是 Python 应用程序的 except 块、C# 或 C++ 中的 catch 块,甚至是一般的“未处理的异常处理程序”。
  3. 如果没有人想处理应用程序,调试器会再次收到通知。这一次,异常被标记为第二次机会异常。这意味着应用程序接下来会崩溃。

您希望在第 3 步中获得通知,但是,应用程序已在第 2 步中停止该过程。

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2012-03-31
    • 1970-01-01
    • 2015-05-13
    相关资源
    最近更新 更多