在GDB中读取内存地址

时间:2014-08-21 00:50:24

标签: c gdb

我试图了解如何读取内存地址并使用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问题正在进行中?我该如何确认?

1 个答案:

答案 0 :(得分:1)

在记忆中,它们是互补的。要确认endian,您可以尝试为xyz->提供一个类似0x55aa的值。