GDB(GNU Debugger)是GNU开源组织发布的一个强大的Unix下的程序调试工具,基于命令行的工作模式,主要用来调试C和C++程序。通过GDB 能在程序运行时动态观察程序的内部结构、变量值和内存的使用情况。
使用GDB调试可执行文件之前时,必须使用带-g编译选项的gcc命令来编译源程序。
编译支持GDB调试的可执行文件:gcc test.c -o test -g
GDB调试:gdb test
GDB主要完成下面四个方面的功能:
1、启动程序,并且可以设置运行环境和参数来运行指定程序;
2、可以让被调试的程序在你所指定的断点处停住(断点可以是条件表达式);
3、当程序被停住时,可以检查此时你的程序中所发生的事;
4、支持单步调试;
5、使用GDB调试能帮助检查出程序的逻辑错误,纠正一个错误后可继续调试。
GDB基本命令:
1、GDB中源码查看相关命令
list/l 行号或函数名 //查看指定位置代码
list <linenum> //显示程序第linenum行的周围的源程序
list <function> //显示函数名为function的函数的源程序
list //显示当前行后面的源程序
list - //显示当前行前面的源程序
list <filename:function> //显示那个文件中的那个函数的源程序
eg:list src/fun1.c:fun1
list <filename:linenum> //显示那个文件的那一行周围的源程序
eg:list src/fun1.c:1
2、运行代码
运行代码:run/r 从头开始连续运行程序
start:开始执行程序,停在main函数第一行语句前面等待命令
3、设置断点与恢复命令
info b info命令可以在调试时用来察看寄存器、断点、观察点和信号等信息。
break/b 行号或函数名 <条件表达式> //在gdb中用break命令来设置断点
delete 断点号
disable 断点号 //禁用断点
enable 断点号 //启用断点
step/s 单步调试(进入子函数)
next/n 单步调试(不进入子函数)
continue/c 继续执行函数,直到程序结束或遇到新的断点
4、GDB中查看运行数据相关命令
print/p 表达式或变量 //查看程序运行时对应表达式或变量的值
5、GDB中修改运行参数相关命令
set variable 变量名=设定值
6、q 退出
直接按Enter键,会重复执行上一条命令
7、GDB中可以运行Linux下的shell命令
shell clear gdb调试界面清屏
make+参数(等价于shell make+参数)
陈浩大哥在CSDN有个《用GDB调试程序》专题博文,就是写那个《跟我一起写Makefile》的,不错,可以看一下,体会一下GDB的强大!地址点击打开链接