1.Pdb文件生成
下图先通过构建生成Pdb文件,然后运行程序,通过提前准备的崩溃按钮使得程序崩溃,生成“dump文件”的演示。
# #添加dmp文件生成及pdb文件生成DEFINES += QT_MESSAGELOGCONTEXT
DEFINES += QT_DEPRECATED_WARNINGS# # 添加DUMP文件
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO,
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUG# test crash
QMAKE_CFLAGS_RELEASE += -g
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_LFLAGS_RELEASE = -mthreads -W# 方便生成DUMP调试
LIBS += -lDbgHelp
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUGQMAKE_CXXFLAGS += -g
QMAKE_CFLAGS += -g# 调试信息以及pdb文件
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CFLAGS_RELEASE = $$QMAKE_CLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFOLIBS += -lpsapi#### 介绍
QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO:设置发布版本的编译器和链接器选项,以包含调试信息。QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /DEBUG:设置发布版本的链接器选项,禁用增量链接并生成调试信息。QMAKE_CFLAGS_RELEASE += -g和QMAKE_CXXFLAGS_RELEASE += -g:在发布版本的编译器选项中添加调试信息。QMAKE_CFLAGS_RELEASE -= -O2和QMAKE_CXXFLAGS_RELEASE -= -O2:从发布版本的编译器选项中移除-O2优化选项。QMAKE_LFLAGS_RELEASE = -mthreads -W:设置发布版本的链接器选项,添加多线程支持和警告。LIBS += -lDbgHelp和LIBS += -lpsapi:分别添加DbgHelp和psapi库,以便在代码中使用。# 拷贝库到执行程序目录# 配置选项
CONFIG += console
CONFIG(debug, debug|release) {TARGET = $${TARGET}UDCONFIG += debug
} else {CONFIG += release
}
通过配置编辑项目,并使用系统提供的接口设置Dump文件生成函数,最后使用Vs调试代码即可。
2.Dump文件调试
下图是先将之前生成的Pdb文件移动至dump文件同级目录,然后使用Visual Studio打开dump文件,在界面中点击使用’仅限本机’进行调试调试程序。
3.参数不全Pdb生成的Dump文件调试
下图使用的Pdb文件为是在缺少相关参数的状态下生成的(只有生成Pdb文件的命令符),可以看到打开后点击使用’仅限本机’进行调试调试程序显示的崩溃位置是异常的。