Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何检查gdb中的[sp,#4]值_C_Assembly_Arm_Gdb - Fatal编程技术网

C 如何检查gdb中的[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使用各种后缀指定要读取的内存量以及如何格式化,有

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

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


谢谢。

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

首先使用
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)。