この問題に気付いたのは 1 つのクラッシュ ログだけで、なぜこの問題が発生しているのかがよくわかりません。基本的に、私は顧客からのクラッシュ ログをシンボル化しました。シンボル化されていない 1 つのフレームを除いて、すべてがチェックアウトされ、正しくシンボル化されます。スニペットを以下に示します (フレーム 9 が問題です)。
6 libc++abi.dylib 0x00001114 std::terminate() + 20
7 libc++abi.dylib 0x00002513 __cxa_throw + 123
8 libstdc++.6.dylib 0x00005ba9 std::__throw_out_of_range(char const*) + 153
9 MyApp 0x002ff343 0x0000c000 + 3093315
10 MyApp 0x002ec02b -[ChildViewController tableView:cellForRowAtIndexPath:] (ChildViewController.mm:42)
11 MyApp 0x0042d725 -[ViewControllerRoot tableView:cellForRowAtIndexPath:] (ViewControllerRoot.m:198)
12 UIKit 0x0004e54d -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 413
この行を記号化するためにさまざまな方法を試しましたが、役に立ちませんでした。私は、atos を手動で実行したほか、symbolicatecrash.pl も実行しました (何が起こっているかを詳細に調べます)。dSYM および .app ファイルは問題なく検出され、クラッシュ ログのバイナリ イメージ セクション内のアプリケーションの UUID と一致します。私は最新の安定した Xcode 4.6 を使用しています。他のチーム メンバーも試しましたが、同じ結果が得られました。
ここで何か問題がありますか、それとも Objective-C の動的な性質の問題ですか? 前者だと思いますが、MyApp の他のフレーム/シンボルがシンボル化されているという事実は、私をさらに混乱させます!
更新:明確にする必要があります。欠落しているフレームは非常に簡単に推測できるように見えるかもしれませんが、この時点で多数の異なるクラスへの複数の呼び出しがあり、すべてが潜在的にout_of_range
エラーをスローする可能性があります。したがって、この欠落フレームにより、デバッグが大幅に困難になります。