如何用GDB查看堆栈内容?
我是GDB新手,所以我有一些问题:
如何查看堆栈的内容? 示例:要查看寄存器的内容,我输入
info registers
。对于堆栈来说,应该是什么?如何查看
$0x4(%esp)
的内容?当我输入print /d $0x4(%esp)
时,GDB 给出错误。
平台:Linux 和 GDB
I am new to GDB, so I have some questions:
How can I look at content of the stack?
Example: to see content of register, I typeinfo registers
. For the stack, what should it be?How can I see the content of
$0x4(%esp)
? When I typeprint /d $0x4(%esp)
, GDB gives an error.
Platform: Linux and GDB
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要使用 gdb 的内存显示命令。基本的是
x,用于检查
。链接到的页面上有一个示例,用于
以十六进制形式打印“堆栈指针(此处为
$sp
)上方的内存的四个字 (w
)”(w
) >x)”。引文略有转述。You need to use gdb's memory-display commands. The basic one is
x
, for examine. There's an example on the linked-to page that usesto print "four words (
w
) of memory above the stack pointer (here,$sp
) in hexadecimal (x
)". The quotation is slightly paraphrased.infoframe
显示堆栈帧信息要读取给定地址的内存,您应该查看
十六进制的
x
x/x $esp
x/d $esp
表示有符号x/u $esp
表示无符号等。 x 使用格式语法,您还可以通过查看当前指令x/i $eip
等info frame
to show the stack frame infoTo read the memory at given addresses you should take a look at
x
x/x $esp
for hexx/d $esp
for signedx/u $esp
for unsigned etc. x uses the format syntax, you could also take a look at the current instruction viax/i $eip
etc.使用:
bt
- 回溯:显示堆栈函数和参数信息帧
- 显示堆栈开始/结束/args/局部指针x/100x $sp
- 显示堆栈内存Use:
bt
- backtrace: show stack functions and argsinfo frame
- show stack start/end/args/locals pointersx/100x $sp
- show stack memory