如何检查 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。
我是 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。