What is 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, http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options


Solution 1:

-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).

Solution 2:

It is possible that there is no difference - depends on the OS native format and how portable you want the debugging info to be. See GCC manual Debugging Options.