使用GCC调试C程序时,只能依靠gcc发出的警号或错误信息来进行,所以调试的效率非常低。
为此,GNU开发了GDB调试器。GDB的调试功能非常强大,甚至可以和Visual C++等开发工具箱媲美。但GDB的缺点是没有图形调试界面。尽管如此,对于从事嵌入式Linux应用开发的人员还是有必要知道GDB的使用方法的,例如:
常用命令:1.查看源文件。在调试程序时,在GDB中通过命令l(list的缩写),可以查看,所有代码行数。同时,GDB以10行为单位进行显示。再运行一次命令“l”就会显示下10行代码。这种设计方便了源代码的阅读。
2.设置断点。断点是调试程序的重要方法,通过断点可以知道程序每一步的执行状况(如当前变量的值、函数是否调用、堆栈使用情况等)。在GDB中通过命令b(breakpoint的缩写)进行断点设置。
3.查看断点情况。由于使用命令“b”可以设置多个断点,在GDB中通过命令info b“查看所有的断点情况。
4.运行程序。在GDB中通过命令“r””(run的缩写)运行程序。GDB默认从代码的首行开始运行(也可以通过“r 行数”的方式让程序从指定行数开始运行)。如多程序中有断点,则程序会在断点行数的前一行暂停运行。
5.查看变量值。程序暂停运行后就可以查看当前的状态了。在GDB中通过命令“p 变量名”(print的缩写)查看当前变量n的值。
6.继续运行程序。查看完当前程序的情况后,就可以让程序继续往下运行了。在GDB中通过命令c让程序继续往下运行。
7.单步运行。在程序逻辑比较复杂的时候往往需要程序能一步一步的往下运行,但如果每行都设置一个断点的话优惠很麻烦。在GDB中可以通过命令“s”(step的缩写)和“n”(next的缩写)让程序一步一步的往下运行。其中s可以在发生函数调用时进入函数内部运行。而n不会进入函数内部运行。
此外,GDB还具有很多的功能,如程序环境设置、使用shell命令等。在后续会进行更详细的说明。