【Linux】【Gdb】关于gdb调试的备忘

1.查看局部变量

set print pretty on//每行只会显示结构体的一名成员
p variable
gdb 中使用“x”命令来打印内存的值,格式为“x/nfu addr”。含义为以 f 格式打印从 addr 开始的 n 个长度单元为 u 的内存值。参数具体含义如下:

n:输出单元的个数;
f:是输出格式。比如 x 是以16进制形式输出,o 是以8进制形式输出等等。
u:标明一个单元的长度。b 是 1 个 byte,h 是 2 个 byte(halfword),w 是 4 个 byte(word),g 是 8 个 byte(giant word)。
以上面程序为例:
(1) 以 16 进制格式打印数组 a 前 16 个 byte 的值:

(gdb) x/16xb a
0x7fffffffe4a0: 0x00    0x01    0x02    0x03    0x04    0x05    0x06    0x07
0x7fffffffe4a8: 0x08    0x09    0x0a    0x0b    0x0c    0x0d    0x0e    0x0f

(2) 以无符号 10 进制格式打印数组 a 前 16 个 byte 的值:

(gdb) x/16ub a
0x7fffffffe4a0: 0       1       2       3       4       5       6       7
0x7fffffffe4a8: 8       9       10      11      12      13      14      15 

(3) 以 2 进制格式打印数组 a 前 16 个 byte 的值: 

(gdb) x/16tb a
0x7fffffffe4a0: 00000000        00000001        00000010        00000011        00000100        00000101        00000110        00000111
0x7fffffffe4a8: 00001000        00001001        00001010        00001011        00001100        00001101        00001110        00001111

(4) 以 16 进制格式打印数组 a 前 16 个 word(4 个 byte)的值: 

(gdb) x/16xw a
0x7fffffffe4a0: 0x03020100      0x07060504      0x0b0a0908      0x0f0e0d0c
0x7fffffffe4b0: 0x13121110      0x17161514      0x1b1a1918      0x1f1e1d1c
0x7fffffffe4c0: 0x23222120      0x27262524      0x2b2a2928      0x2f2e2d2c
0x7fffffffe4d0: 0x33323130      0x37363534      0x3b3a3938      0x3f3e3d3c

 

2.持续查看某变量 watch variable,说明:watch也是一种断点,操作方式同break。

3.打断点 b funname.c:linenum

4.查看断点 info b

5.删除断点 d num

6.运行 r

7.继续运行 c

8.下一步 n

9.进入下一级 s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值