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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值