【Qt调试技巧】如何在Release下调试Qt程序?

1. 前言

在实际项目中,我们会遇到这种需求,即在Release构建配置下,调试Qt程序。

刚听到这个需求时,可能会有些奇怪。调试一般都是在Debug构建模式下进行的,Release用于发布程序,Release模式程序下应该是无法调试的。为什么不在Debug下调试呢?

复杂的项目中,通常存在各种各样的第三方库。由于各种因素,某些第三方库只有Release版本,没有Debug版本,同时由于各种原因,如在头文件中使用了STL,导致程序在Debug模式下使用Release版本的库会崩溃,从而导致主程序以及其他程序模块也只能在Release下构建和运行。默认情况下,Release模式下是无法调试的。无法调试程序,会严重阻碍开发进度。

实现在Release下调试Qt程序,需要对构造系统进行配置。

2. 配置项目

结合我们前面讲的《掌握VS项目配置》、《掌握Qt构造系统》、《掌握Qt调试技巧》等相关内容,我们其实可以通过修改项目配置解决以上问题。

2.1 开启调试信息输出

首先,在Qt Creator中将构建配置切换至 Profile 模式,如图:

【Qt调试技巧】如何在Release下调试Qt程序?_第1张图片

对于 Profile 构建配置,有:

Profile = Release with debug info

Profile 配置即带调试信息(带*.pdb)的Release配置,为了在Release模式下进行调试,可以在开发阶段,使用此配置代替Release配置。

2.2 禁用优化

Release 构建配置一样,在 Profile 构建配置下,编译器也会对代码进行优化,导致生成的程序和我们的代码无法一一对应,从而导致无法调试。所以我们需要禁用 Profile 模式下的程序优化。

在Qt项目的 .pro 文件中,添加以下 qmake 指令:

QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -Od

即可禁用 Profile 构建配置下的程序优化。

2.3 重新构建

修改 .pro 文件后,执行qmake,使Qt构造系统重新生成Makefile文件,从而使 qmake 指令生效。最后,重新构建项目即可。

至此,已完成所有步骤,程序便可以在 Release 模式下进行源码调试。

2.4 开始调试

需要提及的是,在实际开发中,使用Qt调试程序经常会出现卡死、调试源码位置错误等问题。这是Qt使用的调试器本身存在的问题。如果出现这种问题,建议使用Visual Studio进行辅助调试,此部分的详细内容,可以参考本公众号的《掌握Qt调试技术》文章。

3. 结语

在实际项目开发中,可能会出现各种问题。仅仅学会Qt编码是不够的,深入Qt开发必须掌握构造系统配置的基本功。


本文原创发布于 Qt未来工程师。

你可能感兴趣的:(Qt开发,qt,开发语言)