?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文件的命令符),可以看到打開后點擊使用’僅限本機’進行調試調試程序顯示的崩潰位置是異常的。