You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QT 5.9.1应用调用QApplication构造函数崩溃,有哪些调试方法?

环境配置排查
  • 先确认Qt 5.9.1的编译器、架构版本和你编译应用的环境完全匹配,比如你用的是Qt 5.9.1 msvc2015 64位版本就不能用msvc2017、MinGW或者32位的编译器编译,版本不匹配会导致Qt核心库加载异常直接崩溃。你可以把编译出来的exe放到Qt对应版本的windeployqt工具处理后的目录下运行,先排除依赖缺失问题。
  • 检查系统环境变量中的Qt路径是否冲突,如果你装了多个Qt版本,PATH里优先级高的Qt库版本和你编译用的版本不一致的话,会加载错误版本的Qt5Core.dll、Qt5Gui.dll,直接触发QApplication构造崩溃。你可以用MSVC开发者命令提示符下的dumpbin /dependents 你的程序名.exe或者MinGW环境下的ldd 你的程序名.exe查看实际加载的Qt库路径是否正确。
无Qt源码获取崩溃信息的方法
  • 用Windows原生调试工具WinDbg Preview启动程序,不需要Qt源码也能拿到崩溃的调用栈、异常码:启动WinDbg后按F6选择启动你的可执行程序,崩溃后输入k命令即可打印完整调用栈,哪怕没有符号也能看到是在哪个Qt库的哪个偏移位置崩溃,可直接定位是平台插件加载失败还是窗口系统初始化失败类问题。
  • 开启Qt全局日志和插件调试输出:在调用QApplication之前先添加如下代码:
qSetMessagePattern("[%{type}] %{function}:%{line} - %{message}");
QLoggingCategory::setFilterRules("qt.*=true");

运行程序前在终端执行set QT_DEBUG_PLUGINS=1开启插件加载调试日志,能看到QApplication构造过程中加载平台插件、字体配置等所有步骤的输出,可直接定位是否是加载qwindows.dll插件失败、系统字体配置异常等问题。

最小复现排查
  • 直接用Qt Creator新建一个Qt Widgets空白项目,用和你当前项目完全一样的编译套件编译运行,如果空白项目也崩溃,说明是你的Qt环境本身有损坏,重新安装对应版本的Qt即可;如果空白项目正常,说明你的当前项目的构建设置有问题,对比两个项目的.pro文件(qmake项目)或者CMakeLists.txt(CMake项目)的差异,重点检查QT变量引入、编译参数、链接参数是否有错误配置。
  • 检查传入的argc、argv是否被提前篡改,比如你在main函数第一行之前有没有全局对象的构造逻辑修改了命令行参数,QApplication构造时会解析命令行参数,异常参数也会直接触发崩溃,可以在构造QApplication之前先打印argc和所有argv的内容,确认参数正常。

内容的提问来源于stack exchange,提问作者billybob2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:18:04