假设我知道,基于早期的控制台输出,在某个内存位置是一个感兴趣的对象:
<MySpecialObject:0x7a5125a0 This is a description of my special object>
在 ObjC 调试器中,我可以像 po [0x7a5125a0 myMethod:arg1 arg2:arg2]
那样在调试器中与这个对象交互。
我也可以这样做:
(lldb) expr MySpecialObject *$foo = 0x7a5125a0
(lldb) po [foo myMethod:arg1 arg2:arg2]
在调试 Swift 程序时,如何实现这种效果(与 lldb 中给定其内存地址的对象交互)?
最佳答案
您可以尝试以下操作:
(lldb) expr -l objc++ -O -- [(id)0xmyFancyAddressGoesHere selector]
你的里程可能会有所不同,但本质上这是你在 ObjC 中所做的事情的美化版本(除了现在你在 Swift 领域所以你必须在 ObjC 模式下强制表达式计算器(-l objc++),并且你不能依赖“po”别名,所以你需要明确要求“对象描述行为”(-O)
当然,如果您发现自己经常这样做,您可以为“expr -l objc++ -O --”创建自己的别名
关于swift - 与调试器中具有内存位置的 swift 对象交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467845/