Xcodeのセレクタにシンボリックブレークポイントを追加する

私のアプリには、次の(部分的な)スタックトレースで表示されるバグがあります。

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

これをデバッグするために、シンボリックなブレークポイントを追加することに決めました - [Event boolValue]は、セレクタが送られたときにデバッガが停止すると推論しました。

しかし、何も起こらない。ブレークポイントを設定した後、アプリはただの兵士をオンにし、停止せずに同じ例外を生成します。

私は以下のようにブレークポイントを定義しました:

enter image description here

私はXcode 4.2でLLDBデバッガを使用しています

6

5 答え

セレクタにブレークポイントを設定すると、セレクタが実行されたときにlldbが停止します。あなたのケースではセレクタ " - [Event boolValue]"がないので、このブレークポイントは決してヒットしません。

私は "すべてのObjective-C例外"で例外ブレークポイントを設定します。これは、 "認識できないセレクターが送信されました"例外がスローされ、問題の発生場所を確認できるときにヒットします。

7
追加された

I was looking for the same answer (symbolic breakpoints) and this link helped: http://www.cocoabuilder.com/archive/cocoa/308967-symbolic-breakpoints.html#308970

このパターンに従わなければなりません(Xcodeブレークポイントエディタのプレースホルダとしても与えられています):

- [name_of_the_class name_of_the_method:]

たとえば、私は誰が私の左のバーアイテムを設定し、私の設定を上書きするかを見ていました、私は   - [UINavigationItem setLeftBarButtonItem:]

それは働いた。またはこの1つ

- [UINavigationController pushViewController:animated:]

4
追加された

シンボリックブレークポイントがLLDBで正しく動作しないように見えます(この記事の執筆時点では、最新版のXcodeを実行しています、4.3.3)。

私は、LLDBのaddAnimation:forKey:で記号的なブレークポイントを設定し、決してヒットしません。プロジェクトをGDBに切り替えると、ブレークポイントは期待通りに機能します。

2
追加された

- [NSObject doesNotRecognizeSelector:] ここに画像の説明を入力してシンボリックブレークポイントを設定します。

セレクタが間違ったオブジェクトに対して呼び出されている状況を捕捉するのに役立ちます。

2
追加された

認識されないセレクター呼び出しを見つける最も良い方法は、このセレクターを(カテゴリーとして)作成し、その中にブレークポイントを入れることです。

2
追加された