GCC的调试标志(编译阶段/链接阶段)

Debug Flag With GCC (compile phase / link phase)

本文关键字:链接 编译 调试 标志 GCC      更新时间:2023-10-16

我有一个this Makefile

application=<somebinaryname>
CXXFLAGS=-g -std=c++14 -Wall -Werror -pedantic
LDFLAGS=-g
auto: $(application)
$(application): main.o aaa.o aab.o aba.o baa.o
        $(CXX) $(LDFLAGS) -o $@ $^
%.o: %.cpp
        $(CXX) $(CXXFLAGS) -c $< -o $@
# rest of Makefile not relevant to my question

有人能告诉我如果-g选项应该在编译阶段(与CXXFLAGS)或在链接阶段(与LDFLAGS)?我到处寻找例子和文档,但它们都有非常琐碎的例子,比如(甚至是手册页):

gcc -g -o binary source.cpp

我明白了,但这并不能说明什么。

有更明确的吗?

-g输出调试信息。用-g选项编译你的C程序。这允许编译器收集调试信息。然后可以使用gdb调试二进制文件。

一些有用的链接

http://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb/

https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

GCC -g vs -g3 GDB标志:有什么区别?

https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.htmlgcc文档在编译阶段讨论了-g。我由此推断,在链接阶段不需要它。然而奇怪的是,当你点击-g时,链接器并没有抱怨/警告。