-1

この問題に気付いたのは 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エラーをスローする可能性があります。したがって、この欠落フレームにより、デバッグが大幅に困難になります。

4

1 に答える 1

2

これは呼び出されたサードパーティのコードでしょうか? 一部のサードパーティの静的ライブラリには、シンボルが含まれていません。

もう 1 つの可能性は、このコードが Xcode サブプロジェクトで生成された静的ライブラリを介して統合されていることです。このプロジェクトは、スタティック ライブラリからシンボルを削除するように設定されています。

これらは両方とも、これらの呼び出しのクラッシュ レポートにシンボルが表示されません。

于 2013-02-26T15:51:14.047 に答える