Qual é a diferença entre gcc -ggdb e gcc -g

91

Quando uso o gcc para compilar programas C, geralmente uso -gpara obter algumas informações de depuração no arquivo elf para que o gdb possa me ajudar se necessário.

No entanto, notei que alguns programas usam -ggdb, já que é para tornar as informações de depuração mais amigáveis ​​ao gdb.

Como eles diferem e qual é recomendado usar?


Observação: um link para as opções de Debugging Your Program ou GCC, http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options

João
fonte

Respostas:

39

É possível que não haja diferença - depende do formato nativo do sistema operacional e quão portátil você deseja que as informações de depuração sejam. Consulte as opções de depuração do manual do GCC .

Luapyad
fonte
Pode-se considerar vincular a atual como esta ?
1737973
63

-ge -ggdbsão semelhantes com algumas pequenas diferenças, li isto aqui :

-g produz informações de depuração no formato nativo do SO (stabs, COFF, XCOFF ou DWARF 2).

-ggdb produz informações de depuração destinadas especificamente para gdb.

-ggdb3 produz informações de depuração extras, por exemplo: incluindo definições de macro.

-ggdbpor si só, sem especificar os padrões de nível -ggdb2(ou seja, gdb para o nível 2).

mrz
fonte
12

Tenho pelo menos um exemplo em que -ggdb funcionou melhor para mim do que outra opção de depuração que estávamos usando:

Nota: Isso acontece apenas em caixas x86-64 e desaparece quando compilado com -ggdb. Mas as versões mais recentes do depurador funcionam mesmo com -gstabs +


fonte
7

Uma coisa é que "-g" é portátil (por exemplo, em Makefiles destinados a serem executados em plataformas não GNU). Tive um problema de portabilidade em relação a -g vs. -ggdb em uma máquina AIX recentemente, é por isso que o mencionei.

Não tenho ideia do que -ggdb adiciona em usabilidade, no entanto.

DevSolar
fonte