繁体   English   中英

让 Qt 调试器工作 (GDB)

[英]Getting the Qt Debugger to work (GDB)

我目前正在 Windows 7 上构建,并试图让我的调试器逐步执行我的代码。 问题是,虽然我将构建配置设置为调试,并将我的CONFIG变量设置为在我的 QMake 文件中调试,但它仍然不起作用。

这是我的 QMake 文件:

TEMPLATE = app
CONFIG += console debug
CONFIG -= qt

QMAKE_CXXFLAGS += -g -gdb

SOURCES += main.c \
    Triangle.c \
    GlutTesting.c

HEADERS += \
    Triangle.h \
    Includes.h \
    GlutTesting.h

LIBS += -lSDL -lopengl32 -lfreeglut

请注意,它实际上是用 C 编写并按原样编译的(所有文件都是本机 C 代码,使用 MinGW 编译)。

问题是每次我开始时,即使我设置了一个断点,代码实际上只是将它放大到应用程序当前设置的末尾并在那里停止。 现在几乎不可能实际调试我的应用程序。

这里有什么问题? 每次我谷歌时,我都会找到一些关于“添加调试符号”的东西,这在 Linux 中很容易做到,但在 Qt Creator 中,它似乎是正确完成的 PITA(除非我只是遗漏了一些完全简单的东西)。

使用 Qt Creator 2.5.0 在 Linux (Fedora 16) 上遇到类似问题

原来 gdb 在我的主目录中启动,无法(我不知道为什么)加载正在调试的库的调试符号。 每当我强制 gdb 从放置库二进制文件的目录启动时(在 Qt Creator 中,它是通过工具->选项->调试器->附加启动命令中的附加调试器启动命令完成的:只需将“cd”设置为目录二进制文件)一切正常。

另一种解决方案是将环境变量 LD_LIBRARY_PATH 设置为包含二进制目录的完整路径。 在 Qt Creator 中,它是在项目->运行设置->运行环境中完成的。

为了检查调试符号是否已正确加载,请通过 Window->Views->Debugger Log 打开 gdb log 并键入命令“info shared”。

这在 Linux 下对我有用,我不确定它是否可以在 Windows 下工作,但无论如何它都可以:

在 .pro 文件中,我添加了以下行:

CONFIG += debug

这启用了 QT 系统内的调试。 然后我添加了以下内容:

QMAKE_CXXFLAGS += -O0 -g -ggdb

-ggdb 用于 gdb 支持。 并且 O(字母 O)0(数字零)没有优化 - 以防止编译器优化出变量。 这为我提供了在 Linux 下调试时所需的所有符号的回溯。 这是一个相当标准的 gdb 调试编译选项。 但它可能已经被 CONFIG 中的调试选项覆盖。

在 Linux 下,我也重建了项目:

make clean
make

但是对于 Windows,如果您使用的是 Visual Studio,则可能需要进行重建。 我不知道你的编译工具链是什么。

我知道您使用的是 Windows,如果它也可以在 Windows 下运行,那么尝试这些东西可能是值得的。 但是,即使它在 Windows 下不起作用,对于在 Linux 下搜索如何执行此操作的人来说也可能很有用,所以我认为这是一个有效的答案,即使它可能没有专门回答这个特定问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM