2013-08-19 37 views
12

我正在使用Xcode,並希望設置一個斷點來說明我的代碼中的NSString。我正在做的是設置斷點,然後編輯它。我添加一個「Shell命令」操作。第一個參數是say,第二個參數是我遇到問題的地方。在Xcode的斷點處使用Say命令

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

如果我把@[email protected]作爲第二個參數,它讀出的內存地址。恩。 0x0b4be130

如果我嘗試@[myString UTF8String],它給了我另一個內存地址。

如果我解引用myString,@*[myString UTF8String]@,它只給我字符串的第一個字符。

我該如何正確做到這一點?

回答

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以瞭解如何設置這些類型的腳本。