在 Qt creator 的发布模式下设置断点

Posted

技术标签:

【中文标题】在 Qt creator 的发布模式下设置断点【英文标题】:Setting breakpoints in release mode in Qt creator 【发布时间】:2020-02-24 08:18:17 【问题描述】:

我正在为我的 c++ 项目使用 Qt 创建器和 cdb 调试器。我需要在代码中设置一些断点,看看运行时会发生什么。不幸的是,由于一些第三方库,我绝对不能使用调试模式,所以我必须坚持发布模式。

在 Visual Studio 中,我总是做这样的事情,并在发布模式下轻松使用断点,但我如何在 Qt creator 中做到这一点?

(版本:Qt 5.12 / Qt creator 4.8)

【问题讨论】:

我遇到了完全相同的问题,只能部分通过将CONFIG += optimize_debug 添加到我的.pro 来解决它。有更多选项可以看到mkspecs\features\default_post.prf,你可以试试,但对我来说,它们都没有像 VS 那样给我完整的调试功能。 UPD:我也有QMAKE_CXXFLAGS+=/ZiQMAKE_LFLAGS+= /INCREMENTAL:NO /Debug @mvidelgauz 谢谢。我加了,没用。显然我们不应该期望发布模式下的全部调试能力,但断点并不多。我不知道为什么它不起作用。 了解其他标志,我确实与我提到的那些标志有断点。我的另一个技巧:从 VS 启动您的 qt 应用程序(使用这些标志构建),确保生成 pdb 文件并且对 vs 可见 - 对我来说非常适合 我忘记了我做过的另一件事 - 破解 \mkspecs\common\msvc-desktop.conf:找到 QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE_DEBUG -Zi -MD 并将 $$QMAKE_CFLAGS_OPTIMIZE 替换为 $$QMAKE_CFLAGS_OPTIMIZE_DEBUG @mvidelgauz msvc_desktop 也没有用。顺便说一下,很多 *.conf 文件令人困惑:( 【参考方案1】:

尝试在 Qt Creator 中使用“配置文件”构建。这将在“发布”(优化)构建中包含单独的调试行信息。然后,您可以使用 Qt Creator 中的 Debug 按钮启动它并根据需要设置断点。

注意事项:

由于编译器的优化,您可能无法获得所需的确切行。

您的大多数变量将被优化到寄存器中,因此您无法查看它们。如果您需要查看寄存器,请尝试使用 qDebug() 语句打印它们的值的老式方法。 (如有疑问,请打印出来。)

【讨论】:

这么简单,不错!是的,不需要调试模式的全部设施。只需一个断点即可解决问题。

以上是关于在 Qt creator 的发布模式下设置断点的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator 调试

如何在 Qt Creator 中禁用/删除所有断点

在纯 C++ 项目中跳过 Qt Creator Linux 断点

在 Qt Creator 的 FakeVim 模式下使用 Alt 键?

在运行模式下启用 Qt Creator 创建核心文件?

Qt creator 调试模式消失了