我目前正在构建Windows 7,并且正在尝试让我的调试器逐步完成我的代码。问题是,虽然我的构建配置设置为debug,而我的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(除非我只是遗漏了一些非常简单的东西)。
答案 0 :(得分:1)
使用Qt Creator 2.5.0面对Linux(Fedora 16)上的类似问题
原来,gdb在我的主目录中启动而不能(我不知道为什么)加载正在调试的库的调试符号。每当我强制gdb从放置库二进制文件的目录开始时(在Qt Creator中,它通过Tools-> Options-> Debugger->附加启动命令中的其他调试器启动命令完成:只需将“cd”设置为一切都工作得很好。
另一个解决方案是将环境变量LD_LIBRARY_PATH设置为包含二进制目录的完整路径。在Qt Creator中,它在Project-> Run Settings-> Run Environment。
中完成为了检查调试符号是否已正确加载,请通过Window-> Views-> Debugger Log打开gdb日志,然后输入命令“info shared”。
答案 1 :(得分:0)
这在 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 下搜索如何执行此操作的人来说可能很有用,所以我认为这是一个有效的答案,即使它可能没有专门回答这个特定问题。