1、预备知识
在进入正题之前要对GDB有一个大概的了解,GDB能干什么?GDB现在的实用性还有多少?等问题,我们带着这样的问题去书中探索,这样会使我们学到更多的东西。
首先,我看一张图,这张图不是我画的,但是这张图基本涵盖了《软件调试艺术》这本书的所有内容。也就是这本书的浓缩版,精华版。
这本书主要以GDB调试软件为基础进行讲解,可能在此之前我们大家对调试并不关注,或者都没有觉得调试有多重要。我们总是写代码,这些代码的工程比较小,代码量少,所以调试工具没有太大的帮助。如果我们的程序非常的大,并且还有很多的线程,这时出现问题之后我们如果一眼找到错误。如果指针没有释放,或者是多重释放带来的错误,我们又如何应对呢?所以学会调试技巧和方法可以为我们提供思路,不至于在以后的工程中遇到问题之后无从下手。
2、工具介绍
GDB、DDD和Eclipse,后面这两种都是在前面这种的基础之上建立起来的,DDD只是GDB的一个外包装,内部核心其实还是GDB。如果问我这几种调试器工具哪种好,我也不能给出确切的答案,毕竟界面和字符各有各的好处,界面的好处是直观,操作简单。字符命令形式的调试器用起来灵活,你可以按照你的意思进行输出、打印等,并不需要受到任何的限制。所以你可以选择你喜欢的调试器。
GDB中的调试命令无外乎就是watch(设置监视点)、clear(清除断点)、condition(条件断点)、Info、backtrance(bt)、list、tbreak(临时断点)、frame、down、up等等。字符界面调试代码就是使用这些命令的一些组合进行使用,当然GDB里面还可以定义宏,如果你一直调试一种应用,并且有一贯的步骤,那么你可以将这些步骤写成一系列的宏。将这些的宏放启动文件里面,可以放入原始启动文件也就是主目录中的启动文件,也可以在本地项目目录中创建启动文件。它们读入的先后顺序不一样,主目录的.gdbinit文件是在加载可执行文件之前,而本地的.gdbinit文件是在加载可执行文件及符号表之后。如果你将本地启动文件写成其它文件名,你还可以通过使用gdb
–command=文件名 x进行加载,这个命令的意思:在可执行文件x上运行GDB,首先要从文件z中读取启动配置。
介绍这么多,主要是希望大家对GDB有一定的了解。
引用:
《软件调试艺术》
图片:http://www.cnblogs.com/wolflion/p/3381444.html