Qt:捕获应用程序崩溃并显示自定义窗口

Jas*_*enX 5 qt

我希望我们的应用程序有一个特殊的窗口来捕捉崩溃。这样的窗口能够以电子方式向我们发送堆栈跟踪(在 Mac 上),或在 Windows 上发送 .dmp 文件。

我可以处理窗口及其内部功能——但是如何及时捕获应用程序崩溃以优雅地显示自定义窗口?

我用的是 Qt 4.8.5

Rud*_*lis 1

首先 - 对于崩溃,我理解诸如访问冲突、除以 0 等之类的事情,而不是你自己抛出的异常 - 这些可以通过实现来处理QApplication::notify。如果您需要独立于平台的解决方案,那么我想您必须为每个平台上的功能制作一个包装器:

  • 在 Linux、Mac 上,安装信号处理程序并显示窗口,其中可能显示一些可选的信号信息等。
  • 在 Windows 上我想你可以用以下内容包装所有内容

    __try { ... } __except { ... }

也许您可以子类化 QApplication 并在您的类中实际处理信号处理程序安装/添加 try- except 处理程序(取决于平台),然后调用一些通用方法,在其中完成所有设置并开始事件循环。这只是我的两分钱。