序言:
初学者经过学习前面的Makefile知识,信心满满,内心觉得应该要好好学习不单掌握语言的编写,也要学会相对应的工具调高开发效率。有时我们写出来的代码经过执行结果却跟我们预期不一样那怎么办呢,这个时候就要调试了。说到调试有经验的开发童鞋知道在windows下游大名鼎鼎的VS集成平台,那么在linux下呢,特别是编写C、C++有什么工具可以方便我们调试呢,这里我给大家推荐的就是GDB,它也是GNU的debugger,专门为调试而生的。
知识点:
gdb的大致分为以下功能:
1.启动程序;
2.可以在通过断点进行调试;
3.在断点住停止可以查看运行的状况;
4.可以动态的改变执行的环境,包括系统环境,系统变量,局部变量等等;
原理:
在编译的时候附加上调试信息(比如断点,输出调试信息等等),执行gdb调试,程序会按照调试信息顺序执行有断点的地方暂停,有调试信息输出就输出等等方便程序员调试程序,一遍观察程序在运行的一切。下面通过创建一个简单的例子来说明gcc编译,gdb的启动以及调试步骤。
实践:
1.先创建一个简单的gdbtest.c文件,内容如下:
#include <stdio.h> int main(void) { int a = 1; int b = 2; int c = a + b; printf("result :%d",c); return 0; }
2.编译如下:
gcc -Wall -g gdbtest.c -o gdbtest #-g参数
3.启动gdb,并加载gdbtest可执行文件:
gdb #直接在当前gdbtest.c目录中键入gdb命令就会进入调试器
file gdbtest #在gdb命令下输入此命令加载文件,输出Reading symbols from gdbtest ... done表示加载完成
4.使用命令l查看文件此时会列出代码以及标记行好,记住行号或者函数名称以便打断点;
5.使用格式:b 函数(行号)打断点,输入命令:b main或者:b 3效果都是一样!
6.使用r命令运行程序会在断点处暂停,此时可以使用s命令执行下一步,可以使用p打印变量信息查看相关变量:
7.也可以使用命令:disassemble main查看main函数的汇编代码,这应用是更高级的技巧了!
这节课就先讲到这里,先了解下gdb以及简单运动gdb做简单的调试。明天继续!!1