GDB调试
gdb 是由 GNU 软件系统社区提供的调试器,同 gcc 配套组成了一套完整的开发环境,可移植性很好,支持非常多的体系结构并被移植到各种系统中(包括各种类 Unix 系统与 Windows 系统里的 MinGW 和 Cygwin )。此外,除了 C 语言之外,gcc/gdb 还支持包括 C++、Objective-C、Ada 和 Pascal 等各种语言后端的编译和调试。 gcc/gdb 是 Linux 和许多类 Unix 系统中的标准开发环境,Linux 内核也是专门针对 gcc 进行编码的。
gdb 的吉祥物是专门捕杀 bug 的射手鱼,官方有这样一段描述:
For a fish, the archer fish is known to shoot down bugs from low hanging plants by spitting water at them.
作为一种鱼,射手鱼以喷水射下低垂的植物上的虫子而闻名。
GDB 是一套字符界面的程序集,可以使用命令 gdb 加载要调试的程序。 下面为大家介绍一些常用的GDB调试命令。
1.调试准备
项目程序如果是为了进行调试而编译时, 必须要打开调试选项(-g
)。另外还有一些可选项,比如: 在尽量不影响程序行为的情况下关掉编译器的优化选项(-O0
),-Wall
选项打开所有 warning,也可以发现许多问题,避免一些不必要的 bug。
-g
选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证gdb能找到源文件。
习惯上如果是c程序就使用gcc编译, 如果是 c++程序就使用g++编译, 编译命令中添加上边提到的参数即可。
Continue reading