程序发布后在客户手中出现异常崩溃,但自己测试又不能复现问题,要是能捕获到异常时相关信息就很好定位问题了。采用qt+msvc编译的程序可以生成.pdb文件和捕捉异常dump文件来进行问题定位,qt+mingw编译的程序可以如下操作:
1. 项目配置
在.pro文件中添加:
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CFLAGS_RELEASE = $$QMAKE_CLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
QT5可以不用在pro文件中添加以上代码,直接选择Profile编译,而不是Release编译,效果一样。
2. 修改代码支持异常搜集
#ifdef Q_OS_WIN
long __stdcall callback(_EXCEPTION_POINTERS* excp)
{
CCrashStack crashStack(excp);
QString sCrashInfo = crashStack.GetExceptionInfo();
TCHAR my_documents[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, SHGFP_TYPE_CURRENT, my_documents);
QString file_path = QString::fromWCharArray(my_documents);
QDir *folder_path = new QDir;
bool exist = folder_