19 gcc的gdb调试选项参数

在使用gcc对C语言代码进行编译生成可执行文件的时候可以使用调试编译参数选项以生成以供调试器使用的调试信息,其包括了-g和-ggdb两种参数,其中每种参数又分别包括了1、2、3三种级别,每种级别下生成的调试信息量不同,其中默认的是级别2。

级别1(-g1):不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储,回溯跟踪指的是监视程序在运行过程中的函数调用历史,堆栈转储则是一种以原始的十六进制格式保存程序执行环境的方法,两者都是经常用到的调试手段。
级别2(-g2):此时产生的调试信息包括扩展的符号表、行号、局部或外部变量信息。
级别3(-g3):包含级别2中的所有调试信息,以及源代码中定义的宏。

-g生成的调试信息可以用于多种不同的调试器(例如具有运行界面的xxgdb),如果使用gdb作为调试器则可以使用-ggdb选项,其级别和-g相同,包括了一些gdb专用的信息。

不同调试级别下加入生成可执行文件的数据不同,所以会影响生成的文件的大小,以下是对同一个文件square.c使用-ggdb不同级别进行编译连接生成可执行文件square的大小区别,可以看到其大小分别是6504、6956和29872字节,说明-ggdb3加入的相关信息最多:

alloy@raspberrypi:~/linuxcupdate/chapter4$ gcc -ggdb1 square.c -o square
alloy@raspberrypi:~/linuxcupdate/chapter4$ ls -l
total 24
-rwxr-xr-x 1 alloy alloy 6504 Mar 28 00:45 square
-rw-r--r-- 1 alloy alloy  607 Mar 28 00:37 square.c
alloy@raspberrypi:~/linuxcupdate/chapter4$ gcc -ggdb2 square.c -o square
alloy@raspberrypi:~/linuxcupdate/chapter4$ ls -l
total 24
-rwxr-xr-x 1 alloy alloy 6956 Mar 28 00:45 square
-rw-r--r-- 1 alloy alloy  607 Mar 28 00:37 square.c
alloy@raspberrypi:~/linuxcupdate/chapter4$ gcc -ggdb3 square.c -o square
alloy@raspberrypi:~/linuxcupdate/chapter4$ ls -l
total 48
-rwxr-xr-x 1 alloy alloy 29872 Mar 28 00:45 square
-rw-r--r-- 1 alloy alloy   607 Mar 28 00:37 square.c

以上编译环境是基于Raspberry Pi 二代的Raspbian 

19 gcc的gdb调试选项参数,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。