我们程序猿在开发代码的时候,可能编写代码占整个开发过程的百分之十不到,打不时间是在调试。调试很容易帮我们找到程序bug,特别是单步调试,单步调试让我们知道程序是如何行走的。在windows下面,我们有visual studio工具,而在Linux下面,实际上除了gdb工具之外,没有别的选择了。那么,怎么用gdb进行调试呢?我们可以一步一步来调试
一些简单的对文件的创建,权限修改,编写,保存,编译,执行可以查看上一篇Linux下C语言开发(开篇hello world.) 利用vim创建test.c文件,并编写此文件,test.c文件的内容如下:
编写完后,确保程序没问题,在终端test.c文件当前目录输入gcc test.c -o test编译生成可执行文件test,最后./test运行test文件
既然需要调试,那么生成的可执行文件就需要包含调试的信息,这里应该怎么做呢?很简单,在终端,输入 gcc test.c -g -o test。
调试的步骤基本如下所示:
1)首先,输入gdb test
2)进入到gdb的调试界面之后,输入list,即可看到test.c源文件
3)设置断点,输入b main
4)启动test程序,输入run
5)程序在main开始的地方设置了断点,所有程序在printf出断住
6)这时候,可以单步跟踪。s单步可以进入到函数,而n单步则越过函数继续往下执行
7)如果希望从断点处继续运行程序,输入c;即当输入s单步进入函数,只需输入c,即可回到断点处继续运行程序
8)希望程序运行到函数结束,输入finish(程序必须处于run状态,当程序执行完毕也将退出run状态);再次启动,输入run
9)查看断点信息,输入info break
10)如果希望查看堆栈信息,输入bt
11)希望查看内存,输入x + 内存地址
12)删除断点,则输入delete break + 断点序号
13)希望查看函数局部变量的数值,可以输入print + 变量名
14)希望修改内存值,直接输入print + *地址 = 数值
15)希望实时打印变量的数值,可以输入display + 变量名。则每当运行到此变量都会打印变量的数值
16)查看函数的汇编代码,输入disassemble + 函数名
17)退出gdb调试,输入quit即可
以上就是我的Linux下C语言开发(gdb调试)的学习,Linux下C语言开发的博客会陆续上传。