qt creator 默认并关闭了 release 版本异常捕获信息,这就导致了在 windows 平台下即使保存了 *.dmp 崩溃文件,也很难分析出问题原因,解决的方法就是手动启用相关配置,使程序在 release 下一样能抓取到相关信息。
要通过 .dmp 文件分析定位出问题,通常需要具备三个条件,崩溃时的 .dmp 文件、pdb文件和源码。如果只有 *.dmp 和 pdb文件,有时也可以定位出问题。
qt creator 创建的工程默认是关闭了相关的信息开关,需要手动开启,在 qmake 文件中开启 release 版本生成 pdb 文件的方法如下:
(1)找到工程的 *.pro 配置文件,添加如下定义
QMAKE_LFLAGS_RELEASE += /MAP
QMAKE_CFLAGS_RELEASE += /Zi
QMAKE_LFLAGS_RELEASE += /Debug /opt:ref
此函的目的是使程序以管理员方式运行,如果没有强制,则不需要添加
#QMAKE_LFLAGS += /MANIFESTUAC:\”level=\’requireAdministrator\’ uiAccess=\’false\’\”
QMAKE_CXXFLAGS_RELEASE = QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE += QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
(2)启用 try catch 异常捕获
QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
QMAKE_CXXFLAGS_STL_ON = /EHa
备注:如果不启用异常捕获,则代码中的 try catch throw 等语句都不会起作用,当出现异常时程序会直接崩溃