Linux下gdb调试方法(一)

1.  Linux下gdb介绍:

虽然 Linux系统下,读者编写 C/C++代码的IDE可以自由选择,但调试生成的 C/C++ 程序一定是直接或者间接使用gdb调试器。调试是开发流程中一个非常重要的环节,因此,对于从事 Linux C/C++ 的开发人员,熟练使用gdb 调试是一项基本要求

2. Linux下C代码的编译:

gdb调试器的主要功能,就是监控程序的执行流程。Linux发行版中,经常使用gcc编译 C、C++ 程序。但需要注意的是,仅使用 gcc(或 g++)命令编译生成的可执行文件,是无法借助gdb进行调试的。

gcc编译器的优化选项:

gcc编译器支持 -O(等于同 -O1,优化生成的目标文件)和 -g 一起参与编译。GCC 编译过程对进行优化的程度可分为 5 个等级,分别为 O0~O4,O0 表示不优化(默认选项),从 O1 ~ O4 优化级别越来越高,O4 最高。

所谓优化,例如省略掉代码中从未使用过的变量、直接将常量表达式用结果值代替等等,这些操作会缩减目标文件所包含的代码量,提高最终生成的可执行文件的运行效率。

而相对于 -O -g 选项,对 GDB 调试器更友好的是 -Og 选项,-Og 对代码所做的优化程序介于 O0 ~ O1 之间,真正可做到“在保持快速编译和良好调试体验的同时,提供较为合理的优化级别”。

(1) 不带调试信息的代码的编译:

Linux下一般编译C/C++代码时,编译命令为gcc debug_test1.c -o debug_test1,则生成的debug_test1即为可运行程序,该程序是不带调试信息的程序。

(2) 带调试信息的代码的编译:

如果我们需要对生成的可执行程序进行gdb调试,则在编译时需要加上-g选项,加上-g选项即向编译器表明,该程序需要编译成可以gdb调试的代码,加上编译信息,生成的执行文件是带调式信息的程序(比如各行代码所在的行号、包含程序中所有变量名称的列表(又称为符号表)等),生成的可执行程序文件大小也会变大。

终端输入编译命令:gcc -g debug_test1.c -o debug_test1

如果通过Makefile文件进行编译,则在Makefile文件中 -o 编译时添加  -g选项即可

 

3.  Linux下gdb调试方法

(1) 判断Linux系统是否安装gdb:

一般我们安装了gcc编译器,就默认同时安装了gdb调试器。

判断当前Linux系统是否安装有gdb,终端输入命令:gdb -v,如果已安装gdb工具,显示如下:

如果没有安装gdb调试器,则可通过输入命令: sudo apt-get install gdb,即可安装,如下所示:

sudo apt-get install gdb

(2) 启动gdb时不显示提示信息

gdb开始调试程序时,会打印一些免责条款信息。如下所示:

通过添加 --silent(或者 -q、--quiet)选项,即可关闭免责条款信息的打印。开启gdb命令时同时加上该选项。如输入如下命令 :

gdb ./debug_test1 -silent

gdb ./debug_test1 -quiet

gdb ./debug_test1 -q 命令。

以上命令任选一,即可关闭gdb的免责打印信息。如下所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值