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

时间:2013-09-26 17:37:25

标签: qt

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

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

我在Qt 4.8.5

3 个答案:

答案 0 :(得分:1)

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

  • Un Linux,Mac,安装信号处理程序并显示窗口 那里可能会显示一些可选的信号信息等。
  • 在Windows上我想你可以用

    包装所有东西

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

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

答案 1 :(得分:0)

4年前与Qt合作,我需要相同的功能。

不要重新发明轮子。我成功地使用了Crashrpt。附带急需的用户支持功能。

https://code.google.com/p/crashrpt/

答案 2 :(得分:0)

并非所有崩溃都可以尝试捕获。签出此仓库: https://github.com/KandaoVR/qt-breakpad

  
      
  1. 这是一个使用google breakpad处理c ++崩溃并启动Qt应用以将崩溃日志发送回服务器的演示。
  2.   
  3. 大多数代码是从Qt Creator项目中提取的。
  4.   
  5. 该演示包含一个崩溃的QtBreakpadDemo,然后启动QtCrashHandler
  6.