我试图了解如何读取内存地址并使用GDB查找其值。
在代码中,我分配了一个值:
xyz->a = -1;
在GDB中我看到了:
(gdb) p xyz->a
$1 = 65535
(gdb) p/x xyz->a
$2 = 0xffff
(gdb) p &(xyz->a)
$3 = (some_type *) 0x172e750
(gdb) x/40xb 0x172e750
0x172e750: 0xff 0xff 0x00 0x00 0x00 0x00 0x00 0x00
0x172e758: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x172e760: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x172e768: 0xc0 0xe0 0x5b 0x01 0x00 0x00 0x00 0x00
0x172e770: 0xd8 0x00 0x00 0x00 0x29 0x00 0x00 0x00
首先,如何读取内存地址及其值以确定xyz->值?
第二,看起来有一个Endian问题正在进行中?我该如何确认?
答案 0 :(得分:1)
在记忆中,它们是互补的。要确认endian,您可以尝试为xyz->提供一个类似0x55aa的值。