8

NSRangeException常に発生するわけではないエラーがあります (特にデバッグ中) 。ランダムに発生し、どこから来ているのかわかりません。配列操作が多いので、そのように排除するのは難しいです。

私の質問は、デバッガーの出力からクラスや行番号などの手がかりを得ることができるかどうかです。たとえば、番号 12109 と 707 は何ですか?:

2012-03-15 09:25:15.303 appname[12109:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 0]'

任意のポインタをいただければ幸いです。

編集:ログの残りの部分:

*** First throw call stack:
(0x33ff38bf 0x342431e5 0x33f4b275 0x1702d 0x37662331 0x3761b2b3 0x33f4d435 0x373b79eb 0x373b79a7 0x373b7985 0x373b76f5 0x3744de55 0x374e3e45 0x373aa99b 0x33fc7b4b 0x33fc5d87 0x33fc60e1 0x33f494dd 0x33f493a5 0x307cdfcd 0x373ca743 0x2325 0x22e4)
terminate called throwing an exception
4

2 に答える 2

53

例外ブレークポイントを追加します。これは、例外が発生した行で停止します。

ブレークポイント ナビゲーターで、左下のプラスをクリックし、例外ブレークポイントとすべての例外を選択します。本当にすべてのプロジェクトでこれを使用する必要があります。これは非常に貴重です。ただし、ここでは質問がはるかに少なくなります。

于 2012-03-15T11:14:23.860 に答える
1

クラッシュ ログのさらに下を見ると、ある時点で実際のメソッドと行を指している可能性があります。

たとえば、以下のデバイス クラッシュ ログのブロックでは、最後の行が 264 行目の FacebookController.m クラスの request:didLoad: メソッドを明確に指しています。

0x33defacb -[NSObject doesNotRecognizeSelector:] + 175
0x33dee945 ___forwarding___ + 301
0x33d49680 _CF_forwarding_prep_0 + 48
0x00037e47 -[FacebookController request:didLoad:] (FacebookController.m:264)
于 2012-03-15T08:54:45.913 に答える