Qt-mingw 生成dump文件并使用vs调试定位错误代码

4 篇文章 0 订阅

在qt mingw下调试定位崩溃错误代码

使用环境

Qt5.15-mingw版本,window11系统

目的

在mingw版本下,程序崩溃时,自动生成dump文件,并用vs调试定位错误代码

配置pro文件,在exe文件加入调试信息

QMAKE_CFLAGS_RELEASE += -g
QMAKE_CXXFLAGS_RELEASE += -g
#禁止优化
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_LFLAGS_RELEASE = -mthreads -W
#生成dump文件需要
LIBS += -lDbgHelp
#加上下面两行,否则用vs调试时,提示“未找到xxx.exe"
QMAKE_CXXFLAGS += -g
QMAKE_CFLAGS += -g

在main.cpp文件生成dump文件

// 生成dump文件
LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{
    QDateTime CurDTime = QDateTime::currentDateTime();
    QString current_date = CurDTime.toString("yyyy_MM_dd_hh_mm_ss");
    //dmp文件的命名
    QString dumpText = "Dump_"+current_date+".dmp";
    EXCEPTION_RECORD *record = pException->ExceptionRecord;
    QString errCode(QString::number(record->ExceptionCode, 16));
    QString errAddr(QString::number((uint)record->ExceptionAddress, 16));
    QString errFlag(QString::number(record->ExceptionFlags, 16));
    QString errPara(QString::number(record->NumberParameters, 16));
    HANDLE DumpHandle = CreateFile((LPCWSTR)dumpText.utf16(),
                                   GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if(DumpHandle != INVALID_HANDLE_VALUE) {
        MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
        dumpInfo.ExceptionPointers = pException;
        dumpInfo.ThreadId = GetCurrentThreadId();
        dumpInfo.ClientPointers = TRUE;
        //将dump信息写入dmp文件
        MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),DumpHandle, MiniDumpNormal, &dumpInfo, NULL, NULL);
        CloseHandle(DumpHandle);
    }
    QString msg = QString("ErrorCode%1  ErrorAddr:%2  ErrorFlag:%3 ErrorPara:%4").arg(errCode).arg(errAddr).arg(errFlag).arg(errPara);
    qDebug() << msg;
    return EXCEPTION_EXECUTE_HANDLER;
}

int main(int argc, char *argv[])
{
   SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);
   QGuiApplication app(argc, argv);
   return app.exec();
}

将exe文件转换为pdb

使用cv2pdb.exe将exe文件,github下载最新tag版本解压即可,cv2pdb-0.52.zip
链接: cv2pdb-github.
在这里插入图片描述
使用cmd,cv2pdb.exe D:\qtProjects\qBreakpadTest\release\qBreakpadTest.exe
生成pdb文件

出现错误:qBreakpadTest.pdb: cannot load PDB helper DLL

错误原因:电脑没有安装Visual Studio环境

https://github.com/blueCFD/Core/discussions/186)

解决方法:下载并安装vs2022社区版即可
vs2022下载
选择c++桌面开发,下图选择并安装
在这里插入图片描述

再次生成pdb

cv2pdb.exe D:\qtProjects\qBreakpadTest\release\qBreakpadTest.exe
成功生成qBreakpadTest.pdb

用vs2022打开exe文件

将exe文件和pdb放到同一目录下,然后设置符合路径
在这里插入图片描述

设置调试pdb目录位置

在这里插入图片描述

设置源码目录

在解决方案-属性,打开弹窗设置
在这里插入图片描述

点击 使用仅限本机 进行调试

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: Qt是一个跨平台的C++应用程序开发框架。"qt-opensource-windows-x86-mingw530"是Qt在Windows操作系统下的一个版本,使用Mingw530编译器。下载这个版本主要有以下几个步骤: 1. 打开Qt官方网站(qt.io)的下载页面。 2. 在下载页面中,找到并点击进入“Qt 开源”部分。 3. 在“Qt 开源”页面中,找到并点击“下载 Qt”按钮。 4. 在下载页面中,选择Windows操作系统,并在架构选择栏中选择x86。 5. 在编译器选择栏中,选择Mingw530编译器。 6. 选择好操作系统、架构和编译器后,点击“下载”按钮。 7. 下载完成后,双击下载的安装程序,按照提示进行安装。 8. 安装完成后,可以在Windows系统中找到已安装的Qt版本,并开始使用。 下载Qt的目的是为了能够在Windows操作系统下使用Qt进行C++应用程序的开发Qt提供了丰富的功能和工具,可以简化开发过程,提高开发效率。通过下载和安装"qt-opensource-windows-x86-mingw530"版本,您可以在Windows系统中使用Mingw530编译器来编译和运行Qt应用程序。这个版本的Qt是开源的,意味着您可以自由地使用和修改它。无论是开发图形界面还是网络应用,Qt都具备强大的功能和良好的跨平台性能,是一个非常优秀的开发框架。 ### 回答2: qt-opensource-windows-x86-mingw530 是一个开源的 Qt 框架,适用于 Windows 操作系统。它基于 MinGW 编译器版本 5.3.0,提供了一个开发环境,用于构建跨平台的应用程序。 首先,要下载 qt-opensource-windows-x86-mingw530,可以打开 Qt 官方网站。在下载页面上,找到与你的操作系统相对应的版本。点击下载按钮后,会跳转到加载包的页面。根据你的网络速度,下载可能需要一些时间。 下载完毕后,可以双击安装程序运行。安装程序将会提供一些自定义选项,如选择安装路径和组件。根据你的需要进行选择,并点击下一步继续安装。然后等待安装程序完成安装过程。 安装完成后,你可以在指定的安装路径中找到 Qt 框架的文件。可以在安装目录中找到示例项目和文档,帮助你快速上手。另外,Qt Creator 是一个集成开发环境,也会在安装过程中一并安装。 当安装完成后,你可以开始使用 Qt 开发环境。启动 Qt Creator,并创建一个新项目。选择适当的项目模板,并按照向导填写项目信息。然后可以开始编写代码和设计用户界面。 总的来说,下载和安装 qt-opensource-windows-x86-mingw530 是比较简单的。只需要前往 Qt 官方网站,选择合适的版本进行下载并按照安装程序的指示进行安装即可。接下来,你可以使用 Qt Creator 创建和开发各种跨平台的应用程序。 ### 回答3: 要下载qt-opensource-windows-x86-mingw530,首先需要访问Qt官方网站。然后,在网站的下载页面找到适用于Windows操作系统的Qt版本。选择"open source"(开源)版本,因为它是免费提供的。接下来,找到合适的Windows x86(32位)版本并点击下载按钮。 在下载页面中,你可能需要选择适用于MinGW530的版本。MinGW是一个允许在Windows上使用GCC编译器的开发工具集。在选择合适的版本后,点击下载按钮开始下载。 下载的文件通常是一个压缩文件,你需要解压缩它。找到下载文件,并使用解压缩工具(如WinRAR或7-Zip)将其解压缩到任意目录中。 解压缩后,你可以进入Qt的安装目录并找到Qt的执行文件(如qmake.exe)。双击运行该文件,它将指导你完成Qt的安装过程。 安装完成后,你就可以开始使用Qt进行开发了。打开Qt Creator(Qt的集成开发环境)并开始新的项目,或者打开已有的项目。在项目设置中,确保你选择了正确的编译器(MinGW530)。 总的来说,下载和安装qt-opensource-windows-x86-mingw530需要访问Qt官方网站、选择合适的版本、下载、解压缩并安装Qt。完成这些步骤后,你就可以开始使用Qt进行Windows x86平台上的开发了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值