Флаг отладки с помощью GCC (фаза компиляции/фаза ссылки)

У меня есть этот 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

Я понимаю это, но это мало что мне говорит.

Есть больше ясности по этому поводу?


person Novice User    schedule 18.10.2016    source источник
comment
Возможный дубликат Как создать символы отладки с помощью Makefile для C ? [Линукс]   -  person zingdle    schedule 29.07.2019


Ответы (1)


-g выдает отладочную информацию. Скомпилируйте свою программу на C с параметром -g. Это позволяет компилятору собирать отладочную информацию. Затем вы можете использовать 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 Flag: что такое Разница?

person ganeshredcobra    schedule 18.10.2016
comment
Я прошу прощения. Мой вопрос, вероятно, был недостаточно ясен. Ваши ссылки повторяют информацию, которая уже присутствует примерно в 5000 различных документах. Я знаю, что -g создает неоптимизированный двоичный файл отладки со всеми неповрежденными именами символов. Я знаю, что такое отладка, что такое файл отладки, зачем он используется, как он используется и использую его уже много лет. Однако я не уверен, следует ли использовать «-g» или «-ggdb» на этапе компиляции (как и «-c») или на этапе компоновки? Итак, еще раз, в моем конкретном примере Makefile, должен ли он идти с CXXFLAGS или LDFLAGS или с обоими, как у меня? - person Novice User; 18.10.2016