1、预备知识
在进入正题之前要对GDB有一个大概的了解,GDB能干什么?GDB如今的有用性还有多少?等问题,我们带着这种问题去书中探索,这样会使我们学到很多其它的东西。
首先,我看一张图。这张图不是我画的,可是这张图基本涵盖了《软件调试艺术》这本书的全部内容。
也就是这本书的浓缩版。精华版。
这本书主要以GDB调试软件为基础进行解说。可能在此之前我们大家对调试并不关注,或者都没有认为调试有多重要。我们总是写代码,这些代码的project比較小。代码量少,所以调试工具没有太大的帮助。假设我们的程序非常的大,而且还有非常多的线程,这时出现故障之后我们假设一眼找到错误。
假设指针没有释放。或者是多重释放带来的错误,我们又怎样应对呢?所以学会调试技巧和方法能够为我们提供思路。不至于在以后的project中遇到问题之后无从下手。
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有一定的了解。
引用:
《软件调试艺术》
图片: