在 linux下写好了程序不免会产生出一些错误,作为程序员,我们当然需要学会调试了,但是linux下我们使用vi写代码,没有win32下的集成开发工 具中自带的调试工具怎么办呢?放心吧,我们有一个很好的工具——GDB,我们今天就来学习一下如何用这个东西来调试,以后大家就不怕出错了!下面是实例代 码,我们用它来介绍如何调试程序。

#include <stdio.h>

void func()
{
    int i = 10;
    int j = 20;
    i = i+j;
}

int main()
{
    int i = 10;
    func();
    return 0;
}

首先我们来生成可执行文件,在使用gcc编译的时候一定要加上-g的选项,就是在生成的可执行文件中加入了调试的信息。这样我们才可以调试我们的程序。然后使用gdb xxx,这个xxx就是我们生成的可执行文件的文件名,之后进入到调试界面。
linux下的程序设计使用gdb调试程序接着我们输入l xxx,这个xxx就是行号,你希望看到多少行以后的代码就输入多少行的,然后就出来这行以下的代码了,l的意思就是list,列出程序代码的意思。linux下的程序设计使用gdb调试程序接着我们输入b xxx,xxx同样是行号的意思,b就是break断点的意思,xxx还是行号,你希望在哪一行下个断点就输入哪一行,我们在main函数的开始下了一个断点。下面我们又输入了info b,这个是用来查看断点信息的,我们下的所有断点的信息都会显示出来的,你可以多下几个断点试试啊。linux下的程序设计使用gdb调试程序然后我们使用r来运行我们的程序,程序就会跑起来了,在断点的地方程序会停下来,等待我们输入命令。在图中,程序在int i = 10;这个地方停了下来,意思是说将要执行这一行代码了。我们输入n,就是next的意思,希望程序执行下一句话,这叫单步执行吧。在func()处,我们输入s,就是step in进入函数的意思,这个时候程序就进入了func函数了。
linux下的程序设计使用gdb调试程序程序在int i = 10;的地方停了下来,我们输入p i,意思就是print i,把变量i的值打印出来的意思,这时候显示的是一个很大的负数,因为我们还没有为i赋值啊,接着我们走下一步,再次打印i的值,这个时候i的值就是10了。
linux下的程序设计使用gdb调试程序接着我们输入c就是continue程序继续运行的意思,程序就会一直执行下去了,最后我们输入q,退出gdb,这样的话调试就ok了,大家在平时的编程中多调试调试就会了。
linux下的程序设计使用gdb调试程序