大多数程序员所使用的IDE(集成开发环境)都是自带调试功能的,调试功能有什么用呢?大家编译程序时发现的问题是语法或链接问题,能编译通过只能说明我们的程序在语法和链接时未产生错误,但不能说明我们程序就是完全正确的,因为程序的业务逻辑问题是在执行时才会发现的,所以我们会发现有很多初学编程的朋友就总会说明明我程序编译通过啦,为什么执行不出来结果或在执行时发生了错误呢,这就是为什么要有调试这一环节,调试的目的就在于发现程序中的业务逻辑问题,一般使用IDE的可以直接使用自带的调试工具进行程序运行调试,那如果我们是在没有IDE的linux环境下又该如何对程序进行调试呢?最简单的方式就是调用打印函数(C语言中就是printf函数)进行程序语句运行的跟踪,找出问题所在,这种方式的缺点就是需要不停添加printf修改源码,重新编译运行,最后还得删除这些调试信息;而接下来给大家介绍的这个功能强大的调试工具gdb就可以很好的解决这些问题。
首先在linux下我们需要先安装gdb调试工具;大多数情况下Centos和Ubuntu下是默认安装了gdb的,大家可以直接使用命令gdb --version查看;
若没有安装可连网后执行下列指令进行安装;
Centos下:yum -y install gdb
Ubuntu下:sudo apt-get -y install gdb
若要调试程序,编译时还需要加上-g选项让编译生成的可执行文件中包含足够的调试信息,包含代码、栈、局部变量等,若还需查看更多信息如宏定义则需添加-g3选项,这样就可以通过print命令打印宏定义信息;如:
gcc -g test.c -o test、 gcc -g3 test.c -o test
gdb常见使用命令说明:
以上这些常见命令大家可以参考上述表格及help命令多多尝试使用测试。
最后给大家两个gdb实用小技巧,大家可以动手试试,学习一定是需要动脑思考、动手实践的,实践方能检测学习内容的真实性
1. 给当前用户添加编辑gdb的初始化配置文件.gbdinit
vim ~/.gdbinit
添加如下内容:
set print pretty on #打开结构体信息调试打印,方便查看结构体信息
set print array-indexes on #打开打印数组下标索引
更多配置技巧可参考https://blog.csdn.net/wsx199397/article/details/53781641
2. vim ~/.bashrc在当前用户的环境变量配置文件.bashrc中的最后添加如下信息:
alias gdb="gdb -q"
保存退出后,执行source ~/.bashrc生效该环境变量配置
这用于启动gdb时去除版本信息等打印