Avn*_*arr 1 debugging xcode lldb
我想从给定的框架中获取“自我”。有没有办法做到这一点?
我尝试了“框架信息”和其他一些选项。
(lldb) frame info
frame #11: 0x0000000102767ab8 UIKit`-[UIImageView _resolveImageForTrait:] + 463
(lldb)
例如,在下面的示例中,我想要第 11 帧中的按钮对象。
如果在调用函数时停止,那么在没有调试信息的情况下获取优化函数的参数相当容易,因为那时它们仍将位于 ABI 指定的参数传递寄存器中。因此,如果您正在调查的问题是可以重现的问题,那么放置一个自动继续断点-[UIImageView _resolveImageForTrait:]并在其命令中打印或插入$arg1将帮助您解决问题。
但如果你试图从这个堆栈开始计算出价值,你的生活就会变得相当困难。由于您感兴趣的框架已调用另一个函数,因此可以保证您self不再存在于参数传递寄存器中,它已被重用。并且函数体内不需要放置参数。在优化的代码中,编译器应该对 self 进行任何使代码运行速度最快的操作。
事实上,如果在您停止调用后相关框架中没有引用 self,则该信息可能根本不存在。
如果 self 在该帧中仍然存在,则很可能在调用 imageWithTraitCollection: 之前将其推送到函数中某个位置的堆栈上。调试信息会告诉您它在哪里,但如果没有这些信息,您唯一的选择就是读取汇编代码并跟踪 self 从函数开头的第一个参数寄存器到您停止的位置的传播。对于一个小函数来说这可能还不算太糟糕。