2012-10-02 55 views
0

我使用的Xcode 4.3.3,我想設置象徵性的端點。我爲所有objc_msgSend符號創建了一個符號斷點,我想將它與「調試器輸出」結合起來。LLDB Xcode中:錯誤:printf的'不是一個有效的命令

我跟着的this post in SO的提示。但是在我的調試器中,消息

error: 'printf' is not a valid command.

出現。任何線索?我想讓每個函數調用一個消息[Class method]在調試器區域打印。像這樣

[UIApplication sharedApplication] 
[UIApplication _isClassic] 
[NSCFString getCString:maxLength:encoding:] 
[UIApplication class] 
[SLSMoleculeAppDelegate isSubclassOfClass:] 
[SLSMoleculeAppDelegate initialize] 

回答

3

如果前綴「EXPR - 」它的工作原理與LLDB在斷點設置調試命令:

expr -- (void)printf("[%s, %s]\n",(char *) object_getClassName(*(long*)($esp+4)), (char *) *(long *)($esp+8)) 

的解決方案是不完美但是,因爲調試器打印出「無結果」每次輸出後:

[OS_xpc_dictionary, _xref_dispose] 
<no result> 
[NSObject, initialize] 
<no result> 
[OS_object, initialize] 
<no result> 

我沒有發現任何可禁止‘無結果’輸出,這可能是因爲它是不可能的,看到this Open Radar

+0

它看起來像肖恩·卡拉南評估返回void表達式時一兩個月前固定在LLDB來源「無結果」輸出 - 雖然這種變化還沒有被包含在Xcode的釋放呢。訴http://lists.cs.uiuc.edu/pipermail/lldb-commits/Week-of-Mon-20120806/006287.html –

+0

@JasonMolenda:謝謝你的信息。我剛剛用LLDB-167.4進行了測試,它是當前Xcode 4.5.1的一部分,並且「無結果」仍在打印。 –

+0

是的,他的簽入比這個版本更新; lldb-168和更高版本應該有這個變化。 –

相關問題