2011-11-25 24 views
6

有一個在我的應用程序,它具有以下(部分)堆棧跟蹤顯示了一個錯誤:上選擇添加符號斷點在Xcode

2011-11-25 01:55:59.760 Events2[6650:403] -[Event boolValue]: unrecognized selector sent to instance 0x7fb903928670 

要調試此我決定上添加符號斷點 - [事件boolValue]推理當發送該選擇器時,調試器將停止。

但是,沒有任何反應。在設置斷點之後,應用程序就會開始執行併產生相同的異常而不會暫停。

enter image description here

我使用LLDB調試器和Xcode 4.2

回答

7

在選擇器上設置斷點會導致lldb在執行該選擇器時暫停,而不是在發送時。在你的情況下,沒有選擇器「 - [Event boolValue]」,因此這個斷點永遠不會被命中。

我將在「所有Objective-C異常」上設置異常斷點。當「無法識別的選擇器發送」異常被拋出並且您可以看到問題出現的位置時,這將會被觸發。

2

它看起來對我來說,象徵性的斷點不正確的LLDB工作(:

如下我定義的斷點在編寫本文時,我正在運行最新版本的Xcode,4.3.3)。

我在addAnimation:forKey:在LLDB中設置了一個符號斷點,它永遠不會被命中。如果我將項目切換到GDB,則斷點按預期工作。

-2

找到無法識別的選擇器調用的最佳方法是創建此選擇器(作爲類別)並在其中放置一個斷點。

3

我一直在尋找相同的答案(象徵性的斷點),並且此鏈接幫助: http://www.cocoabuilder.com/archive/cocoa/308967-symbolic-breakpoints.html#308970

你必須遵循這種模式(也給出在Xcode中斷點編輯器的佔位符):

- [name_of_the_class name_of_the_method:] 

比如我一直在尋找,看看誰沒有設定我的左手欄項目,並覆蓋我的設置,我用 -[UINavigationItem setLeftBarButtonItem:]

和它的工作。或者這一個

-[UINavigationController pushViewController:animated:]

2

我會設置一個斷點符號帶有此標誌的-[NSObject doesNotRecognizeSelector:]enter image description here

,這將有助於我們捕捉到其中一個選擇被調用防錯對象的情況。