var vs * var上的gdb / x命令

时间:2013-03-03 19:25:54

标签: c gdb

我正在学习GDB。当我运行x / 3b命令查看一个3字节的char数组时,我会得到两个不同的输出,具体取决于我是否在数组名称之前加上*。

(gdb) x /3b myThreeCharArray
0x7fffffffe3c0: 4   11  64
(gdb) x /3b *myThreeCharArray
0x400b04 <debug>:   85  72  -119

这两项产出有什么区别?我的理解是x命令将显示由特定变量表示的内存中的字节。所以我想我认为x命令固有地“取消引用”变量名称,但显然情况并非如此。这是怎么回事?

1 个答案:

答案 0 :(得分:3)

gdb中,x命令获取一个地址并尝试从该内存位置打印值。因此,在第二种情况下,您取消引用myThreeCharArray并生成gdb解释为地址的值,并尝试在该“位置”处打印内存。如果将前3个数字转换为十六进制,则可以看到这种情况:

64 is 0x40
11 is 0x0B
04 is 0x04

由于字节顺序,订单被切换。