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