C 如何检查gdb中的[sp,#4]值
我是C语言的新手。我正试图用汇编语言在GDB中调试我的代码 在汇编中有“ldr r0,[sp,#4]”。如何检查sp+4的值?不是地址C 如何检查gdb中的[sp,#4]值,c,assembly,arm,gdb,C,Assembly,Arm,Gdb,我是C语言的新手。我正试图用汇编语言在GDB中调试我的代码 在汇编中有“ldr r0,[sp,#4]”。如何检查sp+4的值?不是地址 谢谢。这并不像您希望的那样方便,因为大多数寄存器都没有任何内置的$变量。不过,堆栈指针可能有一个$变量 首先使用info register sp获取sp的值。(用您感兴趣的寄存器替换sp。info register自身将打印所有寄存器的值。) 然后使用x命令检查sp+4处的内存。您必须将sp的值复制并粘贴到命令中x使用各种后缀指定要读取的内存量以及如何格式化,有
谢谢。这并不像您希望的那样方便,因为大多数寄存器都没有任何内置的$变量。不过,堆栈指针可能有一个$变量 首先使用
info register sp
获取sp的值。(用您感兴趣的寄存器替换sp
。info register
自身将打印所有寄存器的值。)
然后使用x
命令检查sp+4处的内存。您必须将sp的值复制并粘贴到命令中x
使用各种后缀指定要读取的内存量以及如何格式化,有关详细信息,请参阅help x
例如:
(gdb)信息寄存器sp
sp 0x7fffdcd8-9000
(gdb)x/xw 0x7fffdcd8+4
0x7fffdcdc:0x00005555
如果堆栈指针有一个$变量,它的名称将是$sp
,您可以将其简化为
(gdb)x/xw$sp+4
0x7fffdcdc:0x00005555
不幸的是,我不知道如何列出所有内置的$变量。在我的计算机上,
show conv
仅显示非寄存器的内置$variables。我认为大多数目标的GDB允许您对任何寄存器使用$reg\u name
。对于程序计数器,$pc
,无论在目标上调用什么(例如x86-64上的RIP)。