gdb数据输出进制和类型

x /nfu addr

n(number)数量, 可以是正负数, 相对addr的前后n

f(format)格式, x,z,d,u,o,t,a,c,f,s,i,m等;

u(unit size)每个单位大小, b(byte),h(halfwords=2 byte),w(word = 4 byte),g(giant word = 8byte)

案例程序

int main() {
    char c = 'a';
    char s[] = "abcd";
    int x = 0x123456;
    int z = 0x123456;
    int d = 123456;
    int u = -1;
    int o = 0123456;
    int t = 0b0101010101;
    float f = 0.123;
    int i = 1 + 1;
}
g++ test.cpp -g

x(hex): 十六进制

(gdb) x /1xw &x
0x7fffffffe360:	0x00123456

z(zero): 前置0的十六进制.

(gdb) x /1zw &x
0x7fffffffe360:	0x00123456
(gdb) x /1zw &z
0x7fffffffe364:	0x00123456

d(decimal): 十进制数输出.

(gdb) x /1dw &d
0x7fffffffe368:	123456

u(unsigned decimal): 无符号十进制输出.

(gdb) x /1uw &u
0x7fffffffe36c:	4294967295
(gdb) x /1dw &u
0x7fffffffe36c:	-1
(gdb) x /1xw &u
0x7fffffffe36c:	0xffffffff

o(octal): 八进制输出.

(gdb) x /1ow &o
0x7fffffffe370:	0123456

t(two): 二进制输出.

(gdb) x /1tw &t
0x7fffffffe374:	00000000000000000000000101010101

a(address): 地址,输出绝对和相对地址,相对地址以最近符号为基准的偏移量.

(gdb) x /1ab main
0x555555555149 <main()>:	0xfffffffffffffff3

c(char): 字符串处理,类似int i = 0x1234; *(char*)&c;.无法输出的按照八进制的方式输出.

(gdb) x /1cb &c
0x7fffffffe35f:	97 'a'

f(float): 同上,*(float*)&c.输出浮点.

(gdb) x /1fw &f
0x7fffffffe378:	0.123000003

s(string): 类型是字符串类型就输出,不是就原样输出对应类型数据.

(gdb) x /1sb s
0x7fffffffe383:	"abcd"

i(instruction) : 用于调试汇编的时候, 常用的是disasemmble funcname, location之类的, 但是有的场景不能用,最方便还是x /12i $rip 这种最常见

(gdb) x /1ib &i
   0x7fffffffe37c:	add    (%rax),%al
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值