我想用 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/Object
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: Leaving directory `{project_name}/obj/debug'
我删除了不必要和冗余的信息。 在那里你可以看到很多关于构建的信息,你也可以在编译源文件时看到标志 -g 。 在那之后我想调试,然后我看到了
(gdb) file myApp_debuq
Reading symbols from {project}/bin/myApp_debuq...(no debugging symbols found)...done.
(gdb) list
No symbol table is loaded. Use the "file" command.
我怎么知道,这条消息告诉我没有调试信息。
为什么?
最佳答案
不要从可执行文件中去除调试符号!从链接命令中删除 -s
。
关于c++ - Gdb。程序集生成文件中的标志 -g 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9318363/