我想用gdb调试我的应用程序。我用makefile构建项目,在这里你可以看到项目构建的结果:
编译规则
%.o : %.cpp
g++ -o $@ -c $< $(COMPILE_FLAGS) $(build_flags) $(addprefix -I , $(INCLUDE_DIRS))
哪里
build_flags:= -O0 -g -DEBUG
COMPILE_FLAGS:= -Wall -MD -pipe -Wno-deprecated
编制和构建
mkdir -p src /。 SRC /对象
g ++ -o src /./ main.o -c ../../src/./main.cpp -Wall -MD -pipe -Wno-deprecated -O0 -g -DEBUG -I ../。 ./include
g ++ -o src / Object / Object.o -c ../../src/Object/Object.cpp -Wall -MD -pipe -Wno-deprecated -O0 -g -DEBUG -I ../。 ./include
g ++ -o ../../bin/myApp_debuq src /./ main.o src / Object / Object.o -s -pipe
make:离开目录`{project_name} / obj / debug'
我删除了不必要的冗余信息。 在那里你可以看到很多关于构建的信息,你也可以在源文件编译时看到flag -g。 在那之后,我想调试,我看到
(gdb)文件myApp_debuq
从{project} / bin / myApp_debuq中读取符号...(未找到调试符号)...完成。
(gdb)列表
未加载符号表。使用“file”命令。
我怎么知道,这条消息告诉我没有调试信息。
为什么?
答案 0 :(得分:3)
不要从可执行文件中删除调试符号!从链接命令中删除-s
。