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:
Solicite informações de depuração e também use o nível para especificar a quantidade de informações. O nível padrão é 2. O nível 0 não produz nenhuma informação de depuração. Assim, -g0 nega -g.
O nível 1 produz informações mínimas, o suficiente para fazer backtraces em partes do programa que você não planeja depurar. Isso inclui descrições de funções e variáveis externas e tabelas de número de linha, mas nenhuma informação sobre variáveis locais.
O nível 3 inclui informações extras, como todas as definições de macro presentes no programa. Alguns depuradores suportam expansão de macro quando você usa -g3.