Mobile Analysis Service (MAS) は、シンボルテーブルを使用した iOS アプリ クラッシュログのリバース解析をサポートしており、アプリ内の問題のあるコードを特定することで、オンライン例外のトラブルシューティングと解決の効率を向上させるのに役立ちます。 また、シンボルテーブルのインポートとクエリ、およびシンボルテーブルのリバース解析テストを実行するための iOS シンボルテーブル管理機能も提供します。
シンボルテーブルについて
シンボルテーブルは、メモリアドレスと関数、ファイル名、および行番号間のマッピング関係を記録します。 シンボルテーブルの要素は次のとおりです。
<開始アドレス> <終了アドレス> <関数> [<ファイル名:行番号>]iOS アプリがクラッシュすると、クラッシュログのクラッシュスタックは難読化されたバイナリ情報になります。 バイナリスタック情報は、シンボルテーブルを使用してリバース解析し、読み取り可能な関数名と行番号に変換できるため、問題のあるコードを簡単に特定できます。
iOS シンボルテーブルのインポート
クラッシュログでシンボルのリバース解析を実行する前に、最初にシンボルテーブルをアップロードする必要があります。 iOS プラットフォームでは、シンボルテーブルは通常 xxx.app.dSYM という名前の dSYM ファイルに保存されます。 アプリをビルドまたはリリースするたびに dSYM ファイルをバックアップすることをお勧めします。
iOS シンボルテーブルをアップロードするには、次の手順を実行します。
dSYM ファイルの現在のディレクトリで、Linux コマンド
tar -czvf symbol.tgz ./xxx.app.dSYMを使用して、dSYM ファイルを tgz パッケージに圧縮します。mPaaS コンソールにログインし、対象のアプリを選択して、左側のナビゲーション ウィンドウから [モバイル分析サービス > パフォーマンス分析 > iOS シンボルテーブル管理] ページに移動します。
インポートシンボルテーブルのインポート をクリックし、シンボルテーブル情報を入力して、ポップアップ表示される ウィンドウで対応するシンボルテーブルをアップロードします。
バージョン: アプリのバージョン番号。
モジュール名: iOS アプリ バイナリファイルの名前。これは、対応するアプリ バイナリファイルを識別するためにシンボルテーブルに保存されるため、ユーザーはアプリ バイナリファイルをアプリ シンボルテーブルファイルと照合できます。
ここにアプリ メインモジュールの moduleName を入力します。 たとえば、パッケージが
Produce.appの場合、moduleName はProduceです。UUID: Universally Unique Identifier (UUID)。マシンによって生成される一意の識別子です。
iOS アプリは、コンパイルが発生するたびに UUID を生成します。 ログを正常にリバース解析できるようにするには、スタック内の UUID がシンボルテーブル内の UUID と一致している必要があります。つまり、両方の UUID が同じコンパイルからのものである必要があります。 インポートされたシンボルテーブルの UUID がクラッシュログの UUID と一致する場合にのみ、クラッシュスタック情報を正確に解析および復元できます。
ここにアプリ メインモジュールの UUID を入力します。 複数の UUID がある場合は、いずれかを使用できます。 たとえば、armv7 と arm64 の 2 つのアーキテクチャがある場合、2 つの UUID が存在し、いずれかを入力できます。 UUID 文字列では、「-」を削除し、すべての文字を小文字にする必要があります。例:
b7583434dc5e377bb4d8e7b69bf4c1fb。URL からアップロード: シンボルテーブルから圧縮された tgz ファイルの URL を入力します。 指定された URL にシンボルテーブルファイルがない場合は、エラーメッセージが返されます。
インポート をクリックして、シンボルテーブルをインポートします。
iOS シンボルテーブル管理ページで、シンボルテーブルのインポートステータスを確認します。 完了失敗 ステータスは、シンボルテーブルが正常にインポートされたことを示し、 はインポートの失敗を示します。 シンボルテーブルのインポートに失敗した場合は、エラーメッセージに従って再試行できます。
インポートされたすべてのシンボルテーブルは、シンボルテーブル管理ページに表示され、アプリのバージョンでクエリできます。
解析テスト
解析テストによって、インポートされたシンボルテーブルファイルが有効かどうかを確認します。
解析テストを実行するには、次の手順を実行します。
iOS シンボルテーブルリストで、正常にインポートされたターゲットシンボルテーブルを選択し、解析テスト操作 列の下の をクリックします。
生のログテキスト 列に、解析するクラッシュログを入力し、ログの解析 をクリックします。その後、ログ解析結果 列に解析されたログテキストが表示されます。逆解析に失敗した場合、対応するエラーメッセージと失敗理由(「UUID の不一致」など)が表示されます。