2016-10-18 9 views
0

J'ai un ce MakefileDrapeau débogage avec GCC (compilation de phase/phase de liaison)

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 

Quelqu'un peut-il s'il vous plaît me dire si l'option -g est censé aller pendant la phase de compilation (avec CXXFLAGS) ou pendant la phase de liaison (avec LDFLAGS)? Je cherchais des exemples et des documents partout, mais ils ont tous des exemples très triviales comme (même): la page de manuel

gcc -g -o binary source.cpp 

je reçois, mais il ne me dit pas grand-chose.

Plus de clarté à ce sujet?

Répondre

0

-g produit des informations de débogage. Compilez votre programme C avec l'option -g. Cela permet au compilateur de collecter les informations de débogage. Ensuite, vous pouvez utiliser gdb pour déboguer le binaire.

Quelques liens utiles

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

Je présente mes excuses. Ma question n'était probablement pas suffisamment claire. Vos liens reprennent les informations déjà présentes dans environ 5000 documents différents. Je sais que -g produit un binaire de débogage non optimisé avec tous les noms de symboles intacts. Je sais ce qu'est le débogage, ce qu'est un fichier de débogage, pourquoi il est utilisé, comment il est utilisé et utilisé depuis de nombreuses années. Ce que je ne suis pas certain cependant, c'est si '-g' ou '-ggdb' devrait aller pendant la phase de compilation (comme avec '-c') ou pendant la phase de liaison? Donc, encore une fois, dans mon exemple Makefile spécifique, devrait-il aller avec CXXFLAGS ou LDFLAGS ou les deux comme je l'ai? –