swift - 与调试器中具有内存位置的 swift 对象交互

标签 swift lldb

假设我知道,基于早期的控制台输出,在某个内存位置是一个感兴趣的对象:

<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/

相关文章:

ios - 如何在 Swift 中触摸 UILabel 后对其进行编辑?

debugging - 如何告诉 LLDB 在段错误后继续?

字符 * 赋值 : What's wrong with this code?

c++ - 使用 Xcode 7 GUI (lldb) 调试 C++ 库源代码

ios - 如何在 Swift 2.0 中使用异步方法更新 tableviewcell?

ios - Swift 中的线程安全

swift - 如何在 Swift 中更改导航栏字体?

iOS swift : UIPanGestureRecognizer on 2 differents views

objective-c - 在 Objective-C 运行时动态访问局部变量

swift - Swift 命令的 LLDB 别名