Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Objective c 如何在Xcode控制台中打印反汇编寄存器_Objective C_Xcode_Gdb_Disassembly - Fatal编程技术网

Objective c 如何在Xcode控制台中打印反汇编寄存器

Objective c 如何在Xcode控制台中打印反汇编寄存器,objective-c,xcode,gdb,disassembly,Objective C,Xcode,Gdb,Disassembly,我正在查看一些反汇编代码,看到类似于0x01c8f09b mov 0x8(%edx),%edi,我想知道%edx或%edi的值是什么 是否有方法打印%edx或其他程序集变量的值?是否有一种方法可以打印%edx指向的内存地址处的值(我假设edx是一个寄存器,其中包含指向…某物的指针) 例如,您可以通过在控制台中键入po来打印objet,因此是否有用于打印程序集中的寄存器/变量的命令或语法 背景: 我在这一行获得了EXC\u BAD\u访问权限,我想调试正在发生的事情。我知道这个错误与内存管理有关,

我正在查看一些反汇编代码,看到类似于
0x01c8f09b mov 0x8(%edx),%edi
,我想知道
%edx
%edi
的值是什么

是否有方法打印
%edx
或其他程序集变量的值?是否有一种方法可以打印
%edx
指向的内存地址处的值(我假设
edx
是一个寄存器,其中包含指向…某物的指针)

例如,您可以通过在控制台中键入
po
来打印objet,因此是否有用于打印程序集中的寄存器/变量的命令或语法

背景:

我在这一行获得了
EXC\u BAD\u访问权限
,我想调试正在发生的事情。我知道这个错误与内存管理有关,我正在寻找丢失/太多保留/释放/自动释放调用的位置

其他信息:


这是在IOS上,我的应用程序在iPhone模拟器中运行。

这些不是变量,而是寄存器

info registers regname ...
在GDB中,您可以使用以下命令查看标准寄存器的值:

info registers
请注意,寄存器包含整数值(在本例中为32位,因为寄存器名称的前缀为
e
)。它代表什么还不清楚。它可以是一个指针,一个整数,几乎可以是任何东西

如果尝试将寄存器的值打印为指针时,
po
崩溃,则该值可能不是指针(或无效指针)

打印除浮点以外的所有寄存器的名称和值 寄存器(在所选堆栈帧中)

打印所有寄存器的名称和值,包括浮点寄存器 登记册

info registers regname ...
打印每个指定寄存器regname的相对化值。 regname可以是您正在使用的计算机上有效的任何寄存器名, 带或不带首字母“$”

您可以使用以下方式打印寄存器(例如,
eax
):

简言之:

p $eax
要将其打印为十六进制:

p/x $eax
要显示寄存器指向的值,请执行以下操作:

x $eax
有关更多详细信息,请查看gdb帮助:

help print
help x

取决于您使用的Xcode编译器/调试器。对于gcc/gdb,它是

info registers
但对于clang/lldb来说

register read

如果您使用的是LLDB而不是GDB,则可以使用
register read

help print
help x
info registers
register read