GDB(GNU Source-Level Debugger)是在Linux下调试程序的工具。它能观察另一个程序在执行时的内部活动和出错时的状态。
我们通常用类似%gcc -o test test.c的命令来编译程序,现在我们加上-ggdb参数选项来产生调试信息。生成test后我们就能用%./test来执行。当然结果要么就是按预想的出现了结果,要么就是出现异常的结果。当然我们现在就说在结果异常情况下如何用GDB去查错。
我们可以用%gdb test来调试test。这样我们进入了GDB的调试状态进入(gdb)这个命令提示符。在这里我们键入run就能同样在这里执行test的程序,当然这不是我们的目的,但它确实提供了不退出GDB就能运行程序的便利。调试最基本的当然就是设断点,观察变量然后看变量怎样变化咯。假设现在知道某处的结果可能有问题,那就可以用break加代码行号来设立断点。要知道确切的行号只要输入命令list就能看到带有行号的全部程序。然后用run来运行带有断点的程序,当停在断点的时候就可以来观察变量了,用watch加变量名就可以看到它的值。然后就是步进了,当然就是next,是不是很简单呢。
还有GDB还提供了在其中执行Shell命令的功能,只要遵循shell COMMAND STRING的格式就可以了。其中对于make命令连shell也不需要键入就可以执行了。GDB还有很多的命令,同其他工具一样只要用help就能看到命令及其说明。GDB还能将一个已经运行的进程连接入GDB以便调试。用file指定进程所联系的源代码,然后用attach PROCESS-ID来连接一个运行的进程,用continue可以继续进程的运行。同样用detach可以断开调试的连接。
这里所说的只是GDB的常用功能,它拥有着所有调试所用的强大功能,要在实践中去发现和利用。