1.调试前提
被调试程序在编译时要加入-g选项,这样才能产生供gdb调试使用的信息。如
gcc -g hello.c
2.基本命令
(1)启动调试
gdb 可执行文件名,如 gcc a.out
执行上述命令后,只是为调试做好了准备,尚未启动被调试程序运行。此时进入调试界面。
(2)设置可执行文件参数
(gdb) set args 参数1 参数2 参数3 ...
(3)设置断点
(gdb) break 文件名:行号
如:break hello.c:5,则在hello.c文件的第5行设置断点。
(4)启动程序
(gdb)run
输入run,回车后被调试程序开始运行,并停在前面设置的断点处。
(5)单步执行
(gdb) next
单步执行,并且遇到函数直接跳过,不进入函数内部
(gdb) step
单步执行,并且遇到函数,会进入函数内部
(6)查看变量的值
(gdb) print 变量名
(7)查看内存
(gdb) x/内存单元个数显示方式内存单元大小 内存起始地址
如 (gdb)x /6xb pObj ,会打印出从pObj指向的内存地址开始的6个连续单元,每个单元大小为一个字节,显示格式为16进制。
其中显示方式还有:
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。
内存单元大小还有:
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
(8)继续执行直到遇到下一个断点
(gdb)continue