11

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

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

これをデバッグするために、-[Event boolValue] にシンボリック ブレークポイントを追加することにしました。これは、そのセレクターが送信されるとデバッガーが停止するという理由からです。

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

ブレークポイントを次のように定義しました。

ここに画像の説明を入力

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

4

5 に答える 5

11

セレクターにブレークポイントを設定すると、セレクターが送信されたときではなく、セレクターが実行されたときに lldb が停止します。あなたの場合、セレクター「-[Event boolValue]」がないため、このブレークポイントはヒットしません。

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

于 2012-07-02T13:26:02.887 に答える
9

私は同じ答え(シンボリックブレークポイント)を探していましたが、このリンクが役立ちました: 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:]

于 2013-03-25T19:57:15.820 に答える
6

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

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

于 2014-10-23T11:37:14.433 に答える
3

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

LLDBのaddAnimation:forKey:にシンボリックブレークポイントを設定しましたが、ヒットすることはありません。プロジェクトをGDBに切り替えると、ブレークポイントは期待どおりに機能します。

于 2012-06-21T15:41:01.663 に答える
-2

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

于 2013-01-24T10:31:37.567 に答える