在 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+=/Zi
和QMAKE_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 的发布模式下设置断点的主要内容,如果未能解决你的问题,请参考以下文章
在纯 C++ 项目中跳过 Qt Creator Linux 断点