LLDB で使用可能な情報を取得するために必要な魔法の呪文を理解する助けが必要です。
デバッグしようとしている奇妙な動作があり、問題を確実に再現できますが、根本的な原因はまだわかりません。例外がスローされていることに気付いたので、Xcode に例外ブレークポイントを追加しました。
例外:
CoreData: エラー: 重大なアプリケーション エラーです。-controllerDidChangeContent: の呼び出し中に、NSFetchedResultsController のデリゲートから例外がキャッチされました。*** -[__NSArrayM objectAtIndex:]: userInfo (null) を持つ空の配列の境界を超えたインデックス 2
したがって、ブレークポイントを配置すると、次のスタック トレースが得られます。
これはとても役に立ちます!再利用可能なヘッダー ビューの UICollectionViewFlowLayout でいくつかのファンキーさが起こっているようです...今、私はただする必要があります...ああ。くだらない。待つ。何?
範囲外のインデックスで呼び出されているスタック トレースのフレーム 1 の配列を調べるにはどうすればよいですか? po <some memory address>
コンソールで確認できますか? frame variable
フレーム11-1が選択されている場合、LLDBコンソールで使用できません(ここから)。
このスタック トレースを読み取る方法は次のとおりです。
- (フレーム 14)フェッチされた結果コントローラーは、管理対象オブジェクトのコンテキストの変更を取得し、そのデリゲートを呼び出します
- (フレーム 13)のインスタンスである FRC デリゲートは、のサブクラスであるView Controllerに
FHMemberDirectory
メッセージを送信します。-memberDirectoryDidChangeContent:completion:
FHMemberDirectoryViewController
UICollectionViewController
- (フレーム 12)
-performBatchUpdates:completion:
UICollectionView インスタンスのビュー コントローラー呼び出し - (フレーム 10 - 1) Apple のプライベートな要素がたまたまコレクション ビューを画面にレイアウトしようとしました。おもう!
... 明らかに明らかなことを見逃していたら教えてください! この質問はデバッグに関するものであり、別の目またはより多くの専門知識が私を啓発してくれることを願っています。
素人目には、これは Apple のコードに埋もれたバグのように見えますが、それでも回避する方法を見つける必要があります。私の問題のこの要点は、直接制御できないコードで LLDB コンソールから有用な情報を取得する方法を理解することです。