2016-10-18 2 views
0

У меня есть этот MakefileDebug Флаг с GCC (компилировать фаза/фаза ссылка)

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 [email protected] $^ 

%.o: %.cpp 
     $(CXX) $(CXXFLAGS) -c $< -o [email protected] 

# rest of Makefile not relevant to my question 

Может кто-то пожалуйста, скажите мне, если -g опция должна идти на этапе компиляции (с CXXFLAGS) или во время фазы связи (с LDFLAGS)? Я искал примеры и документацию везде, но все они имеют очень тривиальные примеры, как (даже): страница руководства

gcc -g -o binary source.cpp 

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

Отсутствие большей ясности в этом вопросе?

ответ

0

-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: What is the Difference?

+0

Я извиняюсь. Мой вопрос, вероятно, был недостаточно ясен. Ваши ссылки повторяют информацию, которая уже присутствует в около 5000 различных документов. Я знаю, что -g создает неоптимизированный двоичный код отладки со всеми именами символов без изменений. Я знаю, что такое отладка, что такое отладочный файл, почему он используется, как он используется и использовал его в течение многих лет. Тем не менее, я уверен, что если во время фазы компиляции (как и в случае «-c») или во время фазы ссылки, должны идти «-g» или «-ggdb»? Так снова, в моем конкретном примере Makefile, должен ли он идти с CXXFLAGS или LDFLAGS или обоими, как у меня? –

Смежные вопросы