13

Xcodeの使い方を上手にしようとしています。AllExceptionsブレークポイントをオンにしました。アプリがクラッシュすると、次のように表示されます。

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(0xbb8052 0x209cd0a 0xba4db8 0x2255f2 0xc2439 0x12a5e0f 0x12a6589 0x146bfb1 0x147617c 0x12938e1 0x1290602 0x129b211 0x129b23f 0xc16a6 0x138a4c 0x138852 0x14d0e39 0x14d0143 0x14d13cf 0x14d3a31 0x14d398c 0x14cc3e7 0x1234812 0x1234ba2 0x121b384 0x120eaa9 0x28d3fa9 0xb8c1c5 0xaf1022 0xaef90a 0xaeedb4 0xaeeccb 0x28d2879 0x28d293e 0x120ca9b 0x265c 0x25c5)
terminate called throwing an exception(lldb) 

LHSで、さまざまなスレッドを見ると、本当に意味のあるものは何も見つかりません。CFRunLoopのものがいくつか表示されますが、UITableViewデリゲート/データソースメソッドや自分のメソッドのような「通常の」メソッド名は表示されません。アプリがクラッシュしたときに、16進数ではなく、より有益なスタックトレースが利用できるかどうか疑問に思いました。配列にアクセスしている各場所にブレークポイントを設定できることはわかっています。基本的に、特定のデータソースでアコーディオンのようなテーブルビューを作成しようとしているだけなので、問題があると思いますが、もっと高速なものがあるかどうか疑問に思いました。 Xcodeで役立つものを見てください。ありがとう!

4

2 に答える 2

44

Xcodeでは、

  1. 左側のペインのブレークポイントナビゲーターに移動します。
  2. 下部にある[+]をクリックします。
  3. 「例外ブレークポイントの追加...」を選択します。
  4. そこでデフォルトの選択を行い、[完了]をクリックします。

アプリを再実行し、この例外の原因となっている行で実行が停止するかどうかを確認します。

于 2013-02-21T22:19:29.207 に答える
1

開発中にXCodeで例外を処理する最も簡単な方法は、例外ブレークポイントを追加することです。

あなたは次のようにそれを行うことができます。

  1. 左側のメニューから[例外ナビゲーター]を選択します

ここに画像の説明を入力してください

  1. 左下のボタンから例外ブレークポイントを追加します。

ここに画像の説明を入力してください

  1. すべての例外のブレークポイントを追加します

ここに画像の説明を入力してください

  1. アプリを実行します。

ほとんどの場合、XCodeは例外時に実行を停止し、例外の原因となった行を指し示します。

于 2020-01-27T06:30:17.620 に答える