您的位置:首页 > 运维架构 > Linux

linux下c编程之gdb调试

2017-08-05 14:39 387 查看
之前在个人微信公众号写了一篇关于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编译

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。

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

个人微信公众号,感兴趣可微信扫描下方二维码加关注,每周都有新文章推送。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux c语言 gdb调试