5

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

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

我使用的是 Qt 4.8.5

4

3 回答 3

1

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

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

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

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

于 2013-09-26T18:58:10.163 回答
0

4 年前使用 Qt,我需要相同的功能。

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

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

于 2013-09-26T19:00:56.993 回答
0

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

  1. 这是一个使用google breakpad处理 c++ 崩溃并启动 Qt 应用程序以将崩溃日志发送回服务器的演示。
  2. 大部分代码是从Qt Creator项目中提取的。
  3. 该演示包括一个QtBreakpadDemo崩溃,QtCrashHandler然后启动。
于 2018-07-26T03:41:53.807 回答