iOS および tvOS のログとクラッシュ レポートへのアクセス
Unreal Engine を使用して作成した iOS アプリケーションでは、クラッシュ ログが作成されます。デベロッパーはこのログを利用して、プロジェクトをデバッグし、コードの問題を修正できます。 しかし、セキュリティ上の理由から、クラッシュ ログ自体でデバッグ シンボルは使用できません。 キーや数字は表示されますが、関数の名前や変数に関する情報は、人間が読み取ることのできる形式では表示されません。そのため、デベロッパーはプロジェクトのシンボルのデータベースとログを照合する必要があります。
ログを再シンボル化してそれを読み取るプロセスは、デバッグ ビルドをデバイスに配布する方法に応じて何通りかあります。 TestFlight は、テストビルドを多数の候補デバイスに配信するための Apple のアプリケーションであり、それらのビルドからのログをデベロッパーに提供します。 ログは、USB デバッグから直接入手することもできます。
iOS プロジェクトのログを読み取るには、Mac と Xcode が必要です。 それ以外のオペレーティング システムと IDE では、このページのワークフローに沿って進めることができません。
1. デバイスから直接ログにアクセスする
USB またはイーサネットを通じて直接デバッグする場合は、以下の手順に従ってシンボル化されたクラッシュ ログを表示します。
Xcode のメイン メニューで、[ウィンドウ] >[デバイスとシミュレーター] の順に選択します。
クラッシュ データを取得したい iPhone をクリックした後、[デバイス ログの表示] をクリックします。
読み取りたいログを Control キーを押しながらクリックし、[ログの再シンボル化とエクスポート] をクリックします。
これで、デバッグ シンボルが付いて人間が読み取ることのできるログが提供されます。
2. TestFlight からログにアクセスする
TestFlight で配信されたアプリケーションがクラッシュすると、クラッシュ情報が出力された「XCrashPoint」ファイルが生成されます。 これらのファイルを読み取るには、.dSYM ファイル (プロジェクトのデバッグ シンボルを含む) が必要です。その後、クラッシュ レポートを抽出して、再シンボル化する必要があります。
TestFlight でアプリケーションをデプロイしてログにアクセスする具体的な方法については、TestFlight に関する Apple のドキュメントを参照してください。 このセクションでは、クラッシュ レポートを取得してシンボル化する方法を説明します。
.dSYM ファイルを生成するパッケージ化中のファイル
プロジェクトをパッケージ化するときに、.dSYM ファイルを生成するには、次の手順に従います。
Unreal Editor を開きます。
[プロジェクト設定] を開き、[プラットフォーム] > [iOS] > [ビルド] の順に選択します。
[コードのデバッグとプロファイリングの 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 | オン | 入力を受け取りません。 | 指定した場合は、.dSYMがコンピューターやサーバー間で簡単にコピーできるフラット ファイルになります。 |
たとえば、次のコマンドでは、arm64 アーキテクチャを使用する iOS デバイス用の .dSYM ファイルが生成されます。
```RunUAT.command GenerateDYSM -project=MyProject -platform=Mac -target=EngineTestEditor -config=Test -architecutre=arm64```クラッシュ レポートを抽出して再シンボル化する
クラッシュ レポートを取得し、読み取ることができるように再シンボル化するには、以下の手順に従います。
TestFlight から「
XCrashPoint」ファイルを取得します。 それには、以下をコマンド ラインに入力します。C++export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"Ctrl キーを押しながら「
.XCrashPoint」ファイルをクリックし、[.crashファイルを展開] をクリックします。 以下をコマンド ラインに入力すると、この情報をエクスポートすることもできます。C++export PATH="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources:$PATH"XCode を開き、ターミナルを確認します。 それを使用して Xcode
.packageに移動します。コマンド ラインで以下を実行して symbolicatecrash ツールを使用します。
C++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 で、関数名と変数が見えるようになったクラッシュ ログが提供されます。