之前在个人微信公众号写了一篇关于linux下c编程之gcc编译的文章,感兴趣可关注我的个人微信公众号,搜索移动开发与网络安全技术栈加关注,或扫描本文末尾的微信二维码加关注。
今天接着说下linux环境下c语言编程之gdb调试。写程序必不可少调试,特别是逻辑很复杂,项目很大的情况下。调试可以跟踪代码执行,找出代码中较难发现的逻辑错误处,节省了毫无头绪的分析代码的时间。
安装gdb调试器:
linux发行版的操作系统,如Ubuntu操作系统,都会默认安装有gcc编译器和gdb调试器,如果没有安装可以在shell使用一些工具命令安装。
Ubuntu下的安装命令:apt-get install gdb
CentOS下的安装命令:yum install gdb
本文使用的是centos 7
安装过程如上图所示,yum install gdb指令执行完后查看gdb是否安装成功,可在终端中输入gdb -version
接着了解几个简单的gdb常用的指令:
gdb filename#filename是可执行程序文件名,即编译链接后的c程序。
b main#main为可执行文件中的方法名,即在main函数开始处下断点。
b 6#数字6为c文件中代码行号,即在第六行代码处下断点。
run#运行程序。
n#单步执行,遇到函数会进入到函数内部。
break#停止调试,停止程序。
quit#退出gdb。
上一个例子看看?
首先使用vim编辑器写一个简单c程序,文件名为add.c,文件名随便起的,没有任何含义。在编辑器中输入以下代码
#include <stdio.h>
int main(int lenght,char* argv[]){
int n=0;
int b=19;
int c=b/n;
printf("result is c=%d",c);
}
gcc -g add.c -o add#将add.c编译链接成可执行程序文件
使用指令gdb add 进入到add可执行程序的gdb调试环境。
接着就是给程序代码下断点调试了。
使用b main指令给add可执行程序的main方法下断点。
使用run执行程序,程序运行后会停在main方法入口。
使用n单步执行。
当程序执行到第六行再往下执行行就会提示一个错误,Arithmetic exception(算术异常)。因为第6行代码中的除数为0。再接着往下执行程序就停止了。
正常情况下想停止调试程序可用break。
下面是以行号下断点的例子。
了解更多指令,请百度搜索gdb调试指令,有很多博文都介绍到,不过有些博文写的方法是gdb老版本的内容,最好是查找官方文档。
关于Ubuntu环境下gdb的安装及使用可参考:http://blog.csdn.net/misskissc/article/details/37727771。
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
个人微信公众号,感兴趣可微信扫描下方二维码加关注,每周都有新文章推送。