Version: 2017.3
例外レポートを理解する
欠落した iOS / OSX アプリケーションシンボルの検索とアップロード

Performance Reporting シンボル欠落の場合

シンボルマッププログラムは関数名を処理します。これによって Performance Reporting サービスが、ネイティブの衝突のスタックトレースをメモリのアドレスだけでなく、人間が理解する関数名で提供できるようになります。シンボルマップは直接実行ファイル内に保存できますが、実行ファイルのサイズを削減し実行ファイルを勝手に変更するのを難しくするために、通常は別のファイルに保管されます。

シンボルファイルは OS に基づいて形式が異なります。Apple プラットフォームは dSYM フォルダーに、Android シンボルは .so ファイル、Windows シンボルは .pdbファイルに保存されます。Performance Reporting サービスは、これらすべての形式を確認し処理できます。

Performance Reporting サービスは 2 つの別々のシンボルのセットを使用します。

  • システムシンボル - システムシンボルは OS サプライヤーによって生成されます。Unity は Apple、Google、Microsoft から生成されるシンボルサポートします。
  • アプリケーションシンボル - アプリケーションシンボルは Unity プロジェクトを生成するときに生成されます。

なぜシンボルがないのか?

シンボルファイルには UUID (universally unique identifier) か GUID (globally unique identifier) があり、実行ファイルの ID と正確に一致しなくてはなりません。Performance Reporting サービスでは、ライブラリかモジュールに一致する ID を持つシンボルファイルを起動できない場合は、以下のエラーが発生します。

<system symbols missing>

<symbols missing for uuid: xxx…>

シンボルファイルのない Performance Reporting サービスはレポートを生成し、それはUnity Services Dashboard の Performance タブの Reports セクションに表示されます。

システムシンボルが見つからない場合のレポート

システムシンボルが見つからない場合のレポートは、Reports セクションにあるスタックトレースに以下の 1 行を包含します。

<symbols missing for uuid: xxx…>

たいてい、Unity がそのバージョンの OS のシンボルを持っていないことが原因です。iOS と他の Apple プラットフォームの場合、それらの OS の古いバージョンのシンボルを得ることは簡単ではありません。Unity は iOS バージョン (iOS 7 ファミリー以降) のおよそ 80% のシステムシンボルを持っています。Unity は新しいバージョンの iOS がリリースされるとそのシンボルをできるだけ早く取得するよう努力しています。

このような状況になった場合は、OS の他のバージョンで似たクラッシュレポートがないかを調べます。似たものがあれば、そのバージョンの OS で問題をデバッグして問題を解決できる場合があります。

アプリケーションシンボルが見つからない場合のレポート

アプリケーションシンボルが見つからない場合のレポートは、Reports セクションにあるスタックトレースに以下の 1 行を包含します。

<symbols missing for uuid: xxx…>

Performance Reporting を有効にしているプロジェクトをビルドする場合は、Unity はシンボルファイルを生成し、Performance Reporting サーバーにアップロードします。処理が失敗したら、シンボルが見つからない場合のレポートが Services Dashboard に表示されます。

シンボルのアップロードの失敗をトラブルシュートするには、 主な Unity ログ に掲載されているのと同じフォルダーに置かれている symbol_upload.log ファイルを確認します。このログファイルは、見つかって処理されたシンボルと、シンボルの処理中とアップロード中に発生したエラーを表示します。

例外レポートを理解する
欠落した iOS / OSX アプリケーションシンボルの検索とアップロード