我希望我们的应用程序有一个可以捕获崩溃的特殊窗口。这样的窗口能够以电子方式向我们发送堆栈跟踪(在Mac上)或Windows上的.dmp文件。
我可以处理窗口及其内部功能 - 但是如何及时捕获应用程序崩溃以正常显示自定义窗口?
我在Qt 4.8.5
答案 0 :(得分:1)
首先 - 崩溃时我理解访问冲突,除以0等等,而不是你自己抛出的异常 - 这些可以通过实现QApplication::notify
来处理。如果您需要独立于平台的解决方案,那么我猜您必须为每个平台上的功能制作一个包装器:
在Windows上我想你可以用
包装所有东西 __try { ... } __except { ... }
也许您可以继承QApplication并在您的类中实际处理信号处理程序安装/添加try-except处理程序(取决于平台),然后调用一些通用方法,您可以在其中进行所有设置并开始事件循环。那只是我的两分钱。
答案 1 :(得分:0)
答案 2 :(得分:0)
并非所有崩溃都可以尝试捕获。签出此仓库: https://github.com/KandaoVR/qt-breakpad
- 这是一个使用google breakpad处理c ++崩溃并启动Qt应用以将崩溃日志发送回服务器的演示。
- 大多数代码是从Qt Creator项目中提取的。
- 该演示包含一个崩溃的
QtBreakpadDemo
,然后启动QtCrashHandler
。