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 等语句都不会起作用,当出现异常时程序会直接崩溃