我第一次使用Ubuntu,eclipse的调试器给我带来的麻烦比我可以处理的更多。目前我只是想弄清楚如何让“无法找到当前函数的界限”停止,这样我就可以看到我的控制流程出错了。
我知道这是一个模糊的问题,但我愿意快速提供必要的任何信息。我一直在谷歌搜索大约2个小时的信息,并打开和关闭不同的东西无济于事。
我正在使用版本:3.4.1(我相信最新版本)
此外,即使我在构建之前设置它们,我的断点也不总是有效(可能大约25%的成功率)。我的cout<<或者printf也无法在程序爆炸前打印。这让我觉得它是一种超出调试器的并发进程,但我不知道如何解决这个问题。
我非常感谢任何帮助。我会在附近。
答案 0 :(得分:4)
我想您可以确认:
CONFIG += qt debug
”的项目文件?所有这一切的重点是:
在某个地方,其中一个库或您自己的程序中没有“调试”信息。
-g标志可以直接在makefile中设置(在这种情况下并不特别依赖于OS)。
示例( 不针对Linux )
CXX = g++
CXXFLAGS = -O2 -Wno-deprecated -g
DEFINES = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DLITTLE_ENDIAN
##########################
COMPILE=$(CXX) $(CXXFLAGS) $(DEFINES)
LINK=$(CXX)
UNRAR_OBJ=filestr.o recvol.o rs.o scantree.o
OBJECTS=rar.o strlist.o strfn.o pathfn.o
.cpp.o:
$(COMPILE) -D$(WHAT) -c -g $<
all: unrar
clean:
@rm -f *.o *.bak *~
unrar: WHAT=UNRAR
unrar: $(OBJECTS) $(UNRAR_OBJ)
@rm -f makeunrar
$(LINK) -Wl,-s -g -o unrar $(LDFLAGS) $(OBJECTS)
$(UNRAR_OBJ) $(LIBS)
sfx: WHAT=SFX_MODULE
sfx: $(OBJECTS)
@rm -f default.sfx
$(LINK) -Wl,-s -g -o default.sfx $(LDFLAGS)
$(OBJECTS) -DSFX_MODULE
g++ -O2 -Wno-deprecated -g -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -DLITTLE_ENDIAN -DUNRAR -c -g
rar.cpp
[...]
g++ -Wl,-s -g -o unrar rar.o strlist.o ...
这里,makefile包含一个巨大的陷阱:
g++ -Wl,-s -o unrar rar.o strlist.o ...
-s
代表“strip”,意味着之前生成的所有调试信息都会在最终输出中丢失。所以请检查您的链接选项。