The difference between gcc -ggdb and gcc -g


When I use gcc to compile C programs
I usually use -g to get some debug information into the elf file
so that gdb can help me if needed.

However, I noticed that some programs use -ggdb, since it's supposed to make the
debug info more gdb friendly.

How do they differ and which is recommended to use?

Note: A link to the options for Debugging Your Program or GCC,

Best Solution

-g and -ggdb are similar with some slight differences, I read this here:

-g produces debugging information in the OS¹s native format (stabs, COFF, XCOFF, or DWARF 2).

-ggdb produces debugging information specifically intended for gdb.

-ggdb3 produces extra debugging information, for example: including macro definitions.

-ggdb by itself without specifying the level defaults to -ggdb2 (i.e., gdb for level 2).

Related Question