我想得到" self"从给定的框架。有没有办法做到这一点?
我试过"框架信息"以及其他一些选择。
(lldb) frame info
frame #11: 0x0000000102767ab8 UIKit`-[UIImageView _resolveImageForTrait:] + 463
(lldb)
例如,在以下示例中,我想要第11帧的按钮对象。
答案 0 :(得分:3)
如果在调用函数时停止调用信息,那么将参数调整为优化函数是非常容易的,因为它们仍将在ABI指定的参数传递寄存器中。因此,如果您正在调查的问题是可以重现的问题,在-[UIImageView _resolveImageForTrait:]
上放置自动继续断点并在其命令中打印或调整$arg1
将帮助您解决问题。
但如果你试图从这个堆栈开始计算出价值,你的生活就会变得更加艰难。由于您感兴趣的帧调用了另一个函数,因此可以保证您的self
不再存在于参数传递寄存器中,它已被重用。并且没有必要的地方将参数放在函数体内。在优化的代码中,无论是什么使代码运行最快,编译器都应该使用self。
实际上,如果在您停止呼叫之后未在相关帧中引用self,则信息可能根本不存在。
如果self在该帧中仍然存在,则很可能在调用imageWithTraitCollection之前将其推送到函数中的某个堆栈中。调试信息会告诉你它在哪里,但没有它,你唯一的选择是读取汇编代码并跟踪self从函数开头的第一个参数寄存器到你被停止点的传播。对于一个小函数来说,这可能不是太糟糕。