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

Posted

技术标签:

【中文标题】在纯 C++ 项目中跳过 Qt Creator Linux 断点【英文标题】:Qt Creator Linux Breakpoints skipped in plain C++ project 【发布时间】:2012-07-16 11:16:31 【问题描述】:

嗯,标题几乎说明了一切。我启动 Qt Creator,创建一个新项目并单击普通 C++ 选项。它在 main.cpp 文件中创建以下代码:

#include <iostream>

using namespace std;

int main()

    cout << "Hello World!" << endl;
    return 0;

我在以coutreturn 开头的行上放了一个断点。

我将项目模式设置为调试。

我点击了带有错误的播放按钮。

它不会在断点处停止。

如果我做同样的事情但创建了一个 Qt GUI 应用程序,它就可以工作。

非常感谢您的帮助。

谢谢。

哦,是的,如果有什么不同的话,我使用的是最新版本的 Linux Mint,据我所知,GCC 和 GDB 已安装。

编辑:这里是:

编译输出:

23:27:37: Running build steps for project untitled2...
23:27:37: Starting: "/usr/bin/qmake-qt4" '/home/jean-luc/Desktop/untitled folder/untitled2/untitled2.pro' -r -spec linux-g++ CONFIG+=debug CONFIG+=declarative_debug
23:27:37: The process "/usr/bin/qmake-qt4" exited normally.
23:27:37: Starting: "/usr/bin/make" -w
make: Entering directory `/home/jean-luc/Desktop/untitled folder/untitled2-build-desktop-Qt_4_8_1_in_PATH__System__Debug'
g++ -c -pipe -g -Wall -W -DQT_WEBKIT -I/usr/share/qt4/mkspecs/linux-g++ -I../untitled2 -I../untitled2 -I. -o main.o ../untitled2/main.cpp
g++  -o untitled2 main.o      
 test -n "" && DESTDIR="" || DESTDIR=.;  && test $(gdb --version | sed -e 's,[^0-9]\+\([0-9]\)\.\([0-9]\).*,\1\2,;q') -gt 72 && gdb --nx --batch --quiet -ex 'set confirm off' -ex "save gdb-index $DESTDIR" -ex quit 'untitled2' && test -f untitled2.gdb-index && objcopy --add-section '.gdb_index=untitled2.gdb-index' --set-section-flags '.gdb_index=readonly' 'untitled2' 'untitled2' && rm -f untitled2.gdb-index || true
make: Leaving directory `/home/jean-luc/Desktop/untitled folder/untitled2-build-desktop-Qt_4_8_1_in_PATH__System__Debug'
23:27:38: The process "/usr/bin/make" exited normally.

应用程序输出:

调试开始 调试完毕

【问题讨论】:

无法在 Ubuntu x64 上重现,断点可以在这段代码中正常工作... 打印出“Hello World!”吗? 据我所知,它没有。 也许您在 realase 模式下运行程序而不是 debug? 很确定我没有。在左侧的绿色三角形上方,我选择了调试。我假设这就是我需要做的所有事情。 【参考方案1】:

尽管这已经是几天前的事情了,我还是想添加这个解决方案,因为所描述的问题偶尔会发生在 Qt 和 Creator 中:Qt Creator 有一个讨厌的习惯,建议将发布和调试对象放在同一个文件夹。因此,如果您编译发布版本,然后决定调试您的程序并进行调试版本,它将把调试应用程序与发布对象链接起来。 这些对象不能设置断点。您需要完全清理项目,调用 qmake 并在调试模式下进行所有操作。那么你应该可以正确设置断点了。

【讨论】:

【参考方案2】:

你可以简单地给cmake命令cmake -DCMAKE_BUILD_TYPE=Debug

SET(CMAKE_BUILD_TYPE Debug) 将此行添加到 CMakeLists.txt 并立即调试。断点会被正确命中。

【讨论】:

以上是关于在纯 C++ 项目中跳过 Qt Creator Linux 断点的主要内容,如果未能解决你的问题,请参考以下文章

QT Creator 无法创建纯 C++ 项目或 HTML5 项目(QT Creator 直接关闭)

如何使用 Qt Creator 将 C++ 头文件添加到 Qt 项目

如何在 C++ 中跳过空格

无法在 qt creator 上的 c++ 上链接 realsense 库

Qt Creator 将文件添加到 C++ 项目问题

qt creator 中如何使用c++库