此方法只适用于Windows环境
1、在生成的目的文件中加入调试信息(可能导致exe增大)
#加入调试信息
QMAKE_CFLAGS_RELEASE += -g
QMAKE_CXXFLAGS_RELEASE += -g
#禁止优化
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE -= -O2
#release在最后link时默认有"-s”参数,表示"Omit all symbol information from the
output file",因此要去掉该参数
QMAKE_LFLAGS_RELEASE = -mthreads -Wl
2、dump生成
SetUnhandledExceptionFilter、MiniDumpWriteDump等Windows API。
3、通过dump文件获取堆栈信息
例如步骤2生成Test.dmp,在vs打开,查看崩溃模块及地址004029b8
4、通过qt命令生成asm文件(汇编源码)
5、通过asm文件定位出问题的代码
如下:crush代码位于MainWindow文件sltClickedAppTabButtton函数中,具体哪一行通过汇编指令了解