检查从地址10个十六进制字(ESP -50)起。
你正期待着在内存中,当你做$ ESP-50,因为栈从内存最大到最小的内存。
试试这个,以便更好地了解gdb的是给你
x/10xw $ esp-1您正在查看较低的内存地址,您正在从$ esp -1读取1byte($ esp -1不在您的堆栈帧中,堆栈从大到小地址从当前堆栈帧增长已经以$ esp结尾,$ esp -1是一些随机存储器)
x/10xw $ esp //这会打印出你真正希望看到的内容,打印从当前$ esp推送到堆栈的所有内容以下
X/10xw $ ESP + 1 //这一个你失去1个字节,因为存在被压入堆栈1个字节,但你跳过它
栈
Lower Memory addresses
^$esp -1 random garbadge in memory
^$esp local function variables 0
^$esp +1 local variable 1
^ local variable 2
^ local variable 3
^ local variable 4
Higer Memory Addresses
所以当你说X/10xw $ ESP,GDB打印一切都低于$ ESP(但低于意味着一切高端内存中的地址看看图)