如何检查 gdb 中的 [sp,#4] 值

How to check [sp,#4] value in gdb

我是 C 的新手。我正在尝试使用汇编语言在 GDB 中调试我的代码。

汇编中有“ldr r0, [sp, #4]”。如何检查 sp+4 的值?不是地址。

谢谢。

这并不像您希望的那样方便,因为大多数寄存器没有任何内置的 $variables。不过,可能 是堆栈指针的 $variable。

先用info register sp得到sp的值。 (将 sp 替换为您感兴趣的任何寄存器。info register 本身将打印所有寄存器的值。)

然后使用x命令检查sp+4的内存。您必须将 sp 的值复制并粘贴到命令中。 x采用各种后缀来指定读取多少内存以及如何格式化,详见help x

例如:

(gdb) info register sp
sp            0x7fffdcd8          -9000
(gdb) x/xw 0x7fffdcd8 + 4
0x7fffdcdc: 0x00005555

如果一个堆栈指针的$变量,它的名字就是$sp,你可以简化为

(gdb) x/xw $sp + 4
0x7fffdcdc: 0x00005555

不幸的是,我不知道有什么方法可以列出所有内置的 $variables。在我的电脑上 show conv 只显示 没有 注册的内置 $variables。