在尝试调试用Objective-C编写的应用程序时,我经常看到寄存器包含指向函数的指针。问题是,我似乎无法实际实现。
例:
$register read
$rbx = 0x00007fffd1b326b8 (void *)0x001dffffd1b32731
$x/2xw $rbx
$0x7fffd1b326b8: 0xd1b32731 0x001dffff (flipped endian)
$x/2xw 0x001dffffd1b32731
$error: memory read failed for 0x1dffffd1b32600
显然,我不能在该地址设置一个断点,以便消除该选项,所以我的问题是:是否有可能获得应该在该内存地址的指令?
如果您知道函数的地址,则可以使用disassemble -a
命令查看该函数的程序集。
(lldb) disassemble -a 0x1234
要么
(lldb) disas -a 0x1234