13

我正在使用 Xcode 并想设置一个断点,该断点从我的代码中说出 NSString。我正在做的是设置断点,然后编辑它。我添加了一个“Shell 命令”动作。第一个论点是say,第二个论点是我遇到麻烦的地方。

 NSString *myString = @"This is a test";

如果我把@myString@它作为第二个参数,它会读出内存地址。前任。0x0b4be130

如果我尝试@[myString UTF8String],它会给我另一个内存地址。

如果我取消引用 myString, @*[myString UTF8String]@,它只会给我字符串的第一个字符。

我该如何正确地做到这一点?

4

1 回答 1

13

LLDB 实际上有一个内置的 Python 解释器,整个 LLDB 库都暴露给它。您可以使用script调试器命令访问它。有了这个,我们可以更容易地获取帧中变量的字符串表示,并将其发送到 OS say 命令。添加调试器操作:

script os.system("say " + lldb.frame.GetValueForVariablePath("myVariable").description)

达到你想要的。您甚至可以将 Python 脚本包装为新的 LLDB“命令”,这样您就可以创建一个名为的调试器命令say,该命令明确说明底层对象的描述;查看http://lldb.llvm.org/python-reference.html以了解设置这些类型的脚本的介绍。

于 2013-08-20T10:37:34.650 回答