即使使用-g标志进行编译,gdb中也没有调试符号

del*_*992 12 c++ gcc gdb makefile debug-symbols

我正在尝试使用调试符号编译我的程序,以便在gdb中使用.我已经将-g标志添加到我的makefile中,但是当我在gdb中加载程序时,我仍然得到"从...中读取符号(没有找到调试符号)".怎么了??

这是我的makefile的一个精简的例子,它应该有相关的位:

CPP = g++
CFLAGS = -c -g -Wall

$(BIN): $(OBJ)
 $(CPP) $(LDFLAGS) $(OBJ) -o $(BIN) $(LIBS)

<test.o>: <test.cpp>
 $(CPP) $(CFLAGS) <test.cpp> -o <test.o>
Run Code Online (Sandbox Code Playgroud)

如果你想看到整个事情,你可以去这里,虽然我不认为这是必要的:

http://pastebin.com/vGNjy0ga

杂项说明..我在Windows上使用MinGW进行编译,我将SFML和OpenGL作为依赖项.

不,在我的makefile中找不到-s标志.

del*_*992 6

啊.我非常抱歉.事实证明我的makefile中的"clean:"部分已被破坏.因此当我使用make clean时没有任何事情发生.手动删除.o文件修复了问题.旗帜现在完美运作.感谢所有发布的人!现在可以删除.

  • binW上面有一条评论,你的`make -n`只显示链接部分,而不是编译部分.确保你只看'make -n test.o`. (2认同)

Pet*_*ano 5

使用在某些旧的F77代码上继承的Makefile时,我遇到了相同的问题。我尝试了人们推荐的所有标志(-g -ggdb ...等)。运行该解决方案时请保持整洁

makefile不知道要重新编译,因为仅更改了标志,因此当我认为是时,实际上并没有使用-g或-ggdb进行编译。希望这对某人有帮助!


小智 0

我不确定,但我认为即使在链接时也需要 -g 。