时间:2021-07-01 10:21:17 帮助过:9人阅读
下面调试过程中的代码就是以上代码。
编译:gcc -g test_gdb.c (注:必须加上-g参数,表示在文件中加入调试信息)
加入一个断点 |
(gdb) b test_func1 (gdb) break test_func2 注:两种方式是等价的,一般简写为b |
加入一个断点并设置进入条件 |
(gdb) b test_func1 if flag == 1 |
显示断点信息 |
(gdb) info b (gdb) info breakpoints |
失能一个断点 |
(gdb) disable b 2 注:disable了的停止点,GDB不会删除,需要时,enable即可。 |
使能一个断点 |
(gdb) enable b 2 |
删除一个断点 |
(gdb) delete break 2 |
运行程序 |
run或r |
列出源代码 |
list或l |
单步调试 |
next或n |
单步跟踪,进入函数 |
step或s |
在指定行停住 |
(gdb) b 25 |
继续运行 |
continue或c |
查看某一变量值 |
(gdb) print b (gdb) print a[0] |
查看静态数组 |
(gdb) print /x a 注:/x表示以十六进制显示 |
查看动态数组 |
(gdb) print /x *a@4 注:@的左边是数组的首地址的值,也就是变量array所指向的内容,右边则是数据的长度 |
查看内存 |
(gdb) x/4xh a 语法格式:x/<n/f/u> <addr> n、f、u是可选的参数。 n是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。 f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地址是指令地址,那么格式可以是i。 u 表示从当前地址往后请求的字节数,u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字节,g表示八字节。 |
gdb数据显示格式:
x |
按十六进制格式显示变量 |
d |
按十进制格式显示变量 |
u |
按十六进制格式显示无符号整型 |
o |
按八进制格式显示变量 |
t |
按二进制格式显示变量 |
a |
按十六进制格式显示变量 |
c |
按字符格式显示变量 |
f |
按浮点数格式显示变量 |
查看数组a的内存的四个地址以十六进制显示,每个地址请求4个字节(因为数组成员定义为int):
直接使用quit命令就可退出调试。
gdb调试基本技巧
标签:ext ++ return ret lap one pac enter 作者