GDB 简介

常在河边走,哪有不湿鞋。经常编写程序的人,又怎么可能不遇到bug呢?没有遇到过bug的程序员不是真正的程序员。当程序出现了bug,我们就需要debug,常见的程序错误按错误类型来分,一般可分为两种:

  • 编译错误

  • 运行错误

编译错误是指程序在编译阶段遇到的错误,比如语法错误、语义错误等。这种类型的错误编译器一般会帮助我们检查,当遇到此类错误时,编译器就会停止编译,给出错误或警告的信息,我们根据错误的提示,就可以很快解决掉。

运行错误是指程序在运行阶段遇到的错误,比如段错误。在运行阶段,为了能够定位出现的错误,我们经常使用的方法是打印:将程序运行过程中的一些观察变量打印出来,看是否符合正常的程序逻辑。打印方法简单方便,但对于一些隐藏比较深的bug,或者一些跟内存相关的bug,此时再用“打印大法”可能就爱莫能助了。此时,我们经常使用的另一种方法是:单步调试。所谓但不调试,就是我们可以获取到控制程序运行的权限,在人工操作下,程序可以“放慢脚步”,一步一步地执行,甚至可以暂停执行,方便我们观察各个变量、内存、寄存器的值,看是否符合我们的预期。

在Windows下调试程序,我们一般是使用集成开发环境(IDE,Integrated Development Environment )内部集成的调试器(debugger),通过菜单栏的“调试(debug)”选项,就可以让程序进入调试模式:可以单步执行程序、暂停程序运行、观察变量或内存的值。

在Linux下调试程序,因为早期没有成熟、好用的IDE,一般都是使用GDB来调试程序。GDB是“GNU Symblic Debugger”的缩写,是GNU自由软件下的一个产品,随着版本不断地更新迭代,目前最新的GDB版本不仅可以调试C语言程序,还可以调试C++、Go、Object-C等编译型语言。

在Linux下开发程序,学会使用GDB是一项基本技能。在Windows下开发程序,在很多IDE内部,往往也集成了GDB,用户可以通过图形界面来调用GDB调试程序,也可以直接在DOS环境下直接通过GDB命令来调试程序。

本教程将会带领大家熟悉和掌握程序调试常用的GDB命令,让我们的开发工作更加高效。

《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客