一、生成带调试信息的Release程序。
在 QT Creator Release 模式下调试,需要进行一些特殊配置。
1. 启用 Release 模式的调试信息
在 .pro 文件中添加:
qmake
# 在Release模式下也生成调试信息
CONFIG(release, debug|release) {
QMAKE_CXXFLAGS_RELEASE += -O2 -g
QMAKE_CFLAGS_RELEASE += -O2 -g
QMAKE_LFLAGS_RELEASE += # 保持链接优化
}
# 或者更简单的方式
CONFIG += force_debug_info
或者分平台配置:
qmake
# Windows
win32:CONFIG(release, debug|release): {
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE -Zi
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE -DEBUG
}
# Linux/Mac
unix:CONFIG(release, debug|release): {
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE -g
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE -g
}
2. QT Creator 项目配置
步骤:
打开项目 → 构建设置
构建配置选择 Release
在”构建步骤”中确保生成调试信息
在”运行设置”中确保使用Release版本调试
3. 修改构建套件配置
在 文件中添加:
.pro
qmake
# 确保Release模式包含调试符号
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE += -O2 -g
QMAKE_LFLAGS_RELEASE -= -O1
QMAKE_LFLAGS_RELEASE += -g
4. 完整的 .pro 文件配置示例
qmake
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# Release模式调试配置
CONFIG(release, debug|release) {
# 保持优化但添加调试信息
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE -g
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE -g
# 禁用某些激进优化以方便调试
QMAKE_CXXFLAGS_RELEASE -= -O3
QMAKE_CXXFLAGS_RELEASE += -O2
}
SOURCES +=
main.cpp
mainwindow.cpp
HEADERS +=
mainwindow.h
FORMS +=
mainwindow.ui
二、调试Release程序,定位崩溃点。
通过“调试”菜单中“启动和调试外部应用程序…”进行调试。
使用步骤
打开源代码(可选但强烈推荐):
为了能够设置断点和查看代码,请先在 Qt Creator 中打开该外部应用程序的源代码文件或整个源代码目录()。
文件 -> 打开文件或项目
启动调试:
点击菜单栏的 。
调试 -> 启动和调试外部应用程序...


配置启动设置:
会弹出一个配置对话框,您需要指定以下关键信息:
可执行文件:点击“浏览…”按钮,找到您要调试的那个已经编译好的 (Windows)或 无后缀的可执行文件(Linux/macOS)。
.exe
命令行参数:如果您的程序需要接受命令行参数,在这里填写。
工作目录:设置程序启动时的工作目录。通常这是可执行文件所在的目录,或者是它需要读取资源文件(如图片、配置文件)的目录。
环境变量:如果需要修改或添加特定的环境变量,可以在这里进行设置。

开始调试:
配置完成后,点击“启动”或“调试”按钮(取决于对话框设计)。Qt Creator 会启动该外部程序,并且调试器会立即附加上去。
进行调试:
现在,您可以像调试普通 Qt 项目一样:
在您之前打开的源代码文件中设置断点。
使用 (单步跳过)、
F10(单步进入)等进行单步调试。
F11
在“局部变量和表达式”窗口中查看变量值。
使用调用堆栈视图来查看函数调用链。
注意事项与常见问题
调试符号(Debug Symbols):
这是最关键的一点! 要成功进行源代码级别的调试,您调试的外部应用程序必须是在启用调试符号的情况下编译的。
对于 GCC/MinGW:编译时需要加上 选项。
-g
对于 MSVC(Visual Studio):需要使用 配置编译,或者使用
Debug(发布带调试信息)配置。
RelWithDebInfo
如果程序是 版且剥离了调试信息,您将无法设置断点或查看有意义的变量信息。
Release
源代码匹配:
调试器通过调试符号中的路径来定位源代码。确保您在本机打开的源代码与编译该可执行文件时使用的源代码完全一致。如果代码有改动,调试时可能会出现行号不对应或无法命中断点的问题。
调试器配置:
确保 Qt Creator 中配置了正确的调试器。在 中检查。通常情况下,Qt Creator 会自动检测到系统可用的调试器(如 GDB)。
工具 -> 选项 -> Kits -> 调试器
与“附加到正在运行的进程”的区别:
启动和调试外部应用程序:由 Qt Creator 主动启动这个程序并立即开始调试。
附加到正在运行的进程:程序已经由其他方式(如双击)启动了,然后 Qt Creator 将调试器附加到这个已经在运行的进程上。这个功能在 。
调试 -> 附加到正在运行的进程...





