QT下我们如何实现程序崩溃后,调起我们的crashreporter程式呢?window 系统有一个异常处理函数SetUnhandledExceptionFilter,当异常没有处理的时候,系统就会调用SetUnhandledExceptionFilter设置异常处理函数,它所捕获的异常,内存访问违例,段错误等等,操作系统允许你Hook这个函数,就是通过SetUnhandledExceptionFilter函数来设置。大部分异常通过此种方法都能捕获,不过栈溢出、覆盖的有可能捕获不到。mac系统下,我们可以用oc的一个函数NSSetUncaughtExceptionHandler来捕获。下面开始真正的灵魂代码吧。
一.QT里设置mac下支持OC混编的库,(pro文件加入下面一定定义macos下)。
QMAK
在QT环境下,针对Windows和macOS系统,可以实现程序崩溃后的处理。Windows系统利用SetUnhandledExceptionFilter函数来捕获未处理的异常,而macOS则使用NSSetUncaughtExceptionHandler捕获异常,但由于某些错误如内存访问错误,可能需要额外处理Signal。本文介绍了在QT项目中设置macOS支持Objective-C混编,以及主界面调用的相关方法。
订阅专栏 解锁全文
5457

被折叠的 条评论
为什么被折叠?



