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.