XCode LLDB - 从给定框架获取自我
问题描述:
我想从给定框架获得“自我”。有没有办法做到这一点?XCode LLDB - 从给定框架获取自我
我试过“框架信息”和其他一些选项。
(lldb) frame info frame #11: 0x0000000102767ab8 UIKit`-[UIImageView _resolveImageForTrait:] + 463 (lldb)
例如,在下面的例子中我想从第11帧中的按钮目标。
答
这是相当容易得到的参数优化功能W/O调试信息被调用函数时,如果你停止,此后他们仍然会在ABI指定参数传递寄存器。因此,如果您正在研究的问题是您可以重现的问题,则在其命令中放置自动继续断点,并在其命令中打印或点击$arg1
将帮助您找出问题。
但是如果你想从这个堆栈开始计算出它的价值,那么你的生活将变得相当困难。由于您感兴趣的框架调用了另一个函数,因此您保证您的self
不再位于参数传递寄存器中,它已被重用。而且没有必要将参数放在函数体内的地方。在经过优化的代码中,无论代码运行速度如何,编译器都需要完成自己的工作。
事实上,如果在您停下来的呼叫之后,自我没有在相关框架中被引用,那么信息可能根本不存在。
如果self在这个框架中仍然存在,那么在调用imageWithTraitCollection之前,它最有可能会被压入堆栈的某处。调试信息会告诉你它在哪里,但是如果没有,你唯一的选择是读取汇编代码,并跟随从函数开始处的第一个参数寄存器到停止点的自我传播。对于小功能来说这可能不会太糟糕。