Ao compilar o código-fonte C com gcc ou Clang, sempre uso o -g
sinalizador para gerar informações de depuração para gdb.
gcc -g -o helloworld helloworld.c
Percebi que algumas pessoas recomendam em -g3
vez disso. Qual é a diferença entre os sinalizadores -g
e -g3
? Também há uma diferença entre -g
e -ggdb
?
Respostas:
Dos documentos :
fonte
tl; dr: Para responder à sua pergunta específica,
-g3
"inclui informações extras, como definições de macro ... Alguns depuradores oferecem suporte à expansão de macro quando você usa-g3
", embora-g
não inclua essas informações extras.A resposta mais ampla é que o gcc suporta quatro níveis de informações de depuração, de
-g0
(informações de depuração desabilitadas) a-g3
(informações de depuração máximas).Especificar
-g
é equivalente a-g2
. Curiosamente, os documentos do gcc dizem pouco sobre quais informações-g
/-g2
incluem ou excluem:fonte