iOS と tvOS のログとクラッシュ レポートにアクセスする
Unreal Engine を使用して作成した iOS アプリケーションでは、クラッシュ ログが作成されます。デベロッパーはこのログを利用して、プロジェクトをデバッグし、コードの問題を修正できます。しかし、セキュリティ上の理由から、クラッシュ ログ自体でデバッグ シンボルは使用できません。キーや数字は表示されますが、関数の名前や変数に関する情報は、人間が読み取ることのできる形式では表示されません。そのため、デベロッパーはプロジェクトのシンボルのデータベースとログを照合する必要があります。
ログを再シンボル化してそれを読み取るプロセスは、デバッグ ビルドをデバイスに配布する方法に応じて何通りかあります。TestFlight は、テスト ビルドを多数の候補デバイスに配布する Apple のアプリケーションです。デベロッパーは、このアプリケーションからテスト ビルドのログを入手できます。ログは、USB デバッグから直接入手することもできます。
iOS プロジェクトのログを読み取るには、Mac と Xcode が必要です。それ以外のオペレーティング システムと IDE では、このページのワークフローに沿って進めることができません。
1. デバイスから直接ログにアクセスする
USB またはイーサネットを通じて直接デバッグする場合は、以下の手順に従ってシンボル化されたクラッシュ ログを表示します。
-
Xcode のメイン メニューで [Window (ウィンドウ)] > [Devices and Simulators (デバイスとシミュレーター)] の順に選択します。
-
クラッシュ データを取得したい iPhone をクリックした後、[View Device Logs (デバイス ログの表示)] をクリックします。
-
読み取りたいログを Ctrl キーを押しながらクリックし、 [Re-Symbolicate and export Log (ログの再シンボル化とエクスポート)] をクリックします。
これで、デバッグ シンボルが付いて人間が読み取ることのできるログが提供されます。
2. TestFlight からログにアクセスする
TestFlight を通じて配布されたアプリケーションがクラッシュすると、クラッシュ情報を含む XCrashPoint ファイルが生成されます。このファイルを読み取るには、プロジェクトのデバッグ シンボルを含んだ .dSYM
ファイルを用意する必要があります。その後、クラッシュ レポートを抽出して、再シンボル化する必要があります。
TestFlight を通じてアプリケーションをデプロイしてログにアクセスする具体的な方法については、『TestFlight に関する Apple のドキュメント』を参照してください。このセクションでは、クラッシュ レポートを取得してシンボル化する方法を説明します。
パッケージング中に .dSYM ファイルを生成する
プロジェクトをパッケージ化する時に .dSYM
ファイルを生成するには、以下の手順に従います。
-
Unreal Editor を開きます。
-
[Project Settings (プロジェクト設定)] を開き、[Platforms (プラットフォーム)] > [iOS] > [Build (ビルド)] の順に移動します。
-
[Generate dSYM file for code debugging and profiling (コードのデバッグとプロファイリングのために dSYM ファイルを生成する)] を有効にします。
-
プロジェクトをパッケージ化します。
プロジェクトの .dSYM
ファイルは、プロジェクト フォルダの「/Binaries/iOS
」の下に表示されます。
.dSYM
ファイルには、パッケージ化された日時を示すタイムスタンプがあります。この情報に注目して、.dSYM
ファイルを正しいビルドと対応させます。
コマンドラインから .dSYSM ファイル形式を生成する
UAT を使用して .dSYM ファイルを生成するには、コマンドラインで GenerateDYSM コマンドを使って RunUAT を実行します。次のパラメータを指定します。
パラメータ | オプション | 有効な値 | 説明 |
---|---|---|---|
-Platform=[Target Platform] | はい | IOS, TVOS, Mac | ターゲット プラットフォームを指定します。指定のない場合は現在のプラットフォームがデフォルトになります。 |
-Target=[Project Name] | はい | プロジェクト名。 | 使用したいプロジェクトを指定します。指定のない場合は現在のプロジェクトがデフォルトになります。 |
-Config=[Build Configuration] | はい | Debug, DebugGame, Development, Test, Shipping | ターゲット ビルド コンフィギュレーション。指定のない場合は Development がデフォルトになります。 |
-Architecture=[Architecture Type] | いいえ | x64, arm64, x64+arm64] | ターゲット デバイス アーキテクチャ。 |
-flat | はい | 入力を受け取らりません。 | 指定すると、.dSYMs はフラットフィアルになり、コンピュータまたはサーバー間でのコピーが容易になります。 |
たとえば、次のコマンドは arm64 アーキテクチャを使用して iOS の .dSYM ファイルを生成します。
RunUAT.command GenerateDYSM -project=MyProject -platform=Mac -target=EngineTestEditor -config=Test -architecutre=arm64
クラッシュ レポートを抽出して再シンボル化する
クラッシュ レポートを取得し、読み取ることができるように再シンボル化するには、以下の手順に従います。
- TestFlight から
XCrashPoint
ファイルを取得します。それには、以下をコマンド ラインに入力します。export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"
- Ctrl キーを押しながら
.XCrashPoint
ファイルをクリックし、[Extract.crash
file (.crach ファイルの抽出)] をクリックします。以下をコマンド ラインに入力すると、この情報をエクスポートすることもできます。export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"
-
XCode を開き、ターミナル を確認します。それを使用して Xcode
.package
に移動します。 - コマンド ラインで以下を実行して symbolicatecrash ツールを使用します。
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" cp -i /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ././symbolicatecrash unsymbolicated.crash symbols.dSYM > symbolicated.crash
上記の手順ではデフォルト ディレクトリを使用しています。自分でコマンド ラインを実行する際には、自分の
.crash
ファイルと.dSYM
ファイルの場所を使用してください。
Xcode で、関数名と変数が見えるようになったクラッシュ ログが提供されます。