我正在使用Xcode,并希望设置一个断点,该断点从我的代码中说出一个NSString。我正在做的是设置断点,然后编辑它。我添加了一个“Shell Command”动作。第一个参数是say
,第二个参数是我遇到麻烦的地方。
NSString *myString = @"This is a test";
如果我将@myString@
作为第二个参数,它会读出内存地址。恩。 0x0b4be130
如果我尝试@[myString UTF8String]
,它会给我另一个内存地址。
如果我取消引用myString,@*[myString UTF8String]@
,它只会给我字符串的第一个字符。
我该如何正确地做到这一点?
答案 0 :(得分:12)
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,了解如何设置这些类型的脚本。