gpt4 book ai didi

assembly - x/in gdb (Linux) 的输出是什么意思?

转载 作者:行者123 更新时间:2023-12-02 04:36:06 27 4
gpt4 key购买 nike

我正在使用 gdb 调试 C 程序。

(gdb) r prog_name
(gdb) break main
(gdb) x/wx $esp
(gdb) 0xbffff3d0: 0xbffff60d

我知道前 3 个命令的含义。

我不明白的是 last one 的意思(gdb 在第三条命令后的输出)。具体来说,我不明白:$esp 是一个寄存器,因此我希望在寄存器中找到一个 SINGLE VALUE,据我所知,寄存器没有地址 。那么,假设 0xbffff60d 是寄存器 esp 包含的值,那么 ** 0xbffff3d0** 是什么?

提前致谢

最佳答案

直接来自gdb:

(gdb) help x
Examine memory: x/FMT ADDRESS.
ADDRESS is an expression for the memory address to examine.
FMT is a repeat count followed by a format letter and a size letter.
Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),
t(binary), f(float), a(address), i(instruction), c(char) and s(string),
T(OSType), A(floating point values in hex).
Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).
The specified number of objects of the specified size are printed
according to the format.

所以在你的情况下,$esp 包含 0xbffff3d0,如果你将该值解释为指针并取消引用它,你将得到 *( uint32_t *)0xbffff3d00xbffff60d

关于assembly - x/in gdb (Linux) 的输出是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com