Linux 查看堆栈溢出寄存器错误

Linux 查看堆栈溢出寄存器错误,linux,Linux,我试图查看esp寄存器,以了解堆栈溢出是如何发生的 我已使用x/8xw$esp命令查看寄存器,但不断收到错误消息,即无法访问0xFFFFFFFFDF30处的内存。 谁能告诉我可能是什么问题吗 我使用的是Linux3.13。 我通过下面的链接了解寄存器和堆栈溢出。 除上述命令外,其他所有操作都正常工作。 在10:32的视频中,作者可以显示esp寄存器,但当我在我的机器上显示时,我不能 主要问题是,该教程是针对x86体系结构编写的 “无法访问0xFFFFFFFFDF30处的内存” 0xFFFFFFF

我试图查看esp寄存器,以了解堆栈溢出是如何发生的

我已使用
x/8xw$esp
命令查看寄存器,但不断收到错误消息,即
无法访问0xFFFFFFFFDF30处的内存。
谁能告诉我可能是什么问题吗

我使用的是Linux3.13。 我通过下面的链接了解寄存器和堆栈溢出。 除上述命令外,其他所有操作都正常工作。 在10:32的视频中,作者可以显示esp寄存器,但当我在我的机器上显示时,我不能


主要问题是,该教程是针对x86体系结构编写的

“无法访问0xFFFFFFFFDF30处的内存”

0xFFFFFFFFDF30是64位地址。当你们在64位系统上时,你们不能检查ESP寄存器,因为简单地说,并没有


例如,64位系统使用这种寄存器——RSP、RBP、RIP等。。您可以知道这在x86上注册为ESP、EBP和EIP。因此,如果您想继续学习本教程,请使用gcc将training.c代码编译为32位,例如:gcc-m32-o demo.c

嗨,Yeez,我尝试按照您的建议编译该程序,但如果说“Undefined command:gcc”就会出错我对堆栈溢出还不熟悉,对计算机体系结构和系统的知识有限,这就是我不知道如何处理这些错误的原因。很多thanks@ZareenaNaz没问题,只需尝试执行此
导出CFLAGS=-m32
并再次编译即可。如果问题仍然存在,您应该安装这个libc6-dev-i386软件包,比如:
sudo apt get install g++-multilib libc6-dev-i386
,前提是您使用的是Ubuntu或Debian发行版,谢谢您的帮助。很遗憾,当我按照您的建议尝试安装软件包时,出现了其他错误。您是否有我可以拥有的电子邮件,以便我通过该电子邮件提问。