解决gdb调试报错“No symbol table is loaded. Use the "file" command.”

linux下写的Makefile,然后编译成文件,gdb调试的时候用list命令报错.搞了半天,在网上找了很多,说是一定要用-g,

然而我是添加的,后来又有人说是需要把-g写调宏定义CFLAGS = -g,但是还是不对.最后经过自己的摸索,才发现,如果

是.c的文件,用CFLAGS是可以的,但是如果是.cpp文件,则必须使用CPPFLAGS = -g才可以

贴上代码如下

CPP = g++ ##这里用gcc或者是g++都没有影响
CPPFLAGS = -g# -D_REENTRANT -DDEBUG -lpthread  ##如果这里是cpp文件,一定用CPPFLAGS,如果是.c文件,一定用CFLAGS
OBJS = hello.o judge.o
PROG = hello
.PHONY : all clean


all:$(PROG)
$(PROG):$(OBJS)
$(CPP) $(CPPFLAGS) -o $(PROG) $(OBJS)
#也可以写成下面这样,这样就不用考试是用CFLAGS,或者是CPPFLAGS了,不过这样每次都会编译所有的文件,会消耗内在
#hello:hello.cpp judge.cpp
# gcc $(CFLAGS) -o hello hello.cpp judge.cpp

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。