在Xcode中的断点上使用Say命令

在Xcode中的断点上使用Say命令,xcode,Xcode,我正在使用Xcode,希望设置一个断点,从代码中说出NSString。我正在做的是设置断点,然后编辑它。我添加了一个“Shell命令”操作。第一个参数是say,第二个参数是我遇到问题的地方 NSString *myString = @"This is a test"; 如果我将@myString@作为第二个参数,它将读取内存地址。例如0x0b4be130 如果我尝试@[myString UTF8String],它会给我另一个内存地址 如果我取消引用myString,@*[myString U

我正在使用Xcode,希望设置一个断点,从代码中说出NSString。我正在做的是设置断点,然后编辑它。我添加了一个“Shell命令”操作。第一个参数是
say
,第二个参数是我遇到问题的地方

 NSString *myString = @"This is a test";
如果我将
@myString@
作为第二个参数,它将读取内存地址。例如0x0b4be130

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

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


如何正确地做到这一点?

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

script os.system("say " + lldb.frame.GetValueForVariablePath("myVariable").description)
实现你想要的。您甚至可以将Python脚本包装为新的LLDB“命令”,这样您就可以创建一个名为
say
的调试器命令,该命令明确表示底层对象描述;看一看关于设置这些脚本类型的介绍