-g和-ggdb之间只有细微的区别。
具体来说,-g产生的debug信息是OS native format, GDB可以使用之。而-ggdb产生的debug信息更倾向于给GDB使用的。
所以,如果你用的GDB调试器,那么使用-ggdb选项。如果是其他调试器,则使用-g。
3只是级别。这个级别会产生更多的额外debug信息。3这个级别可以调试宏。
参考:
http://stackoverflow.com/questions/668962/what-is-the-difference-between-gcc-ggdb-and-gcc-g
https://gcc.gnu.org/ml/gcc-help/2009-02/msg00130.html
https://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Debugging-Options.html#Debugging-Options