ゲームがクラッシュすると、Unreal Engine ではクラッシュ レポートが作成され、これを クラッシュ レポート クライアント に送信できます。クラッシュ レポート クライアントは、オプションの コメントを提供してクラッシュ レポートを Epic Games に送信するようにユーザーに要求するアプリケーションです。ゲームにパッケージ化したクラッシュ レポート クライアントをカスタマイズして、ゲームのデバッグに役立つように自分のサーバーにクラッシュ レポート データを送信できます。
このガイドでは、以下のものを提供します。
- クラッシュ レポートとその内容の概要。
- ローカル マシン上のクラッシュ レポートが存在する場所に関する情報。
- コンフィグ変数のリファレンスおよびクラッシュ レポートのプロジェクト設定
- 自分のパッケージ化されたアプリケーション用にクラッシュ レポーター クライアントを変更および設定する方法。
- リモート サーバーにクラッシュ レポートを受信するために使用できるクラッシュ レポート サービスの推奨事項。
クラッシュ レポート
クラッシュ レポートには以下のものが含まれています。
- クラッシュ guid と呼ばれる一意のランダム クラッシュ識別子。
- タイプ (crash、assert、ensure) などのエラー、またはクラッシュしているスレッドと他のすべてのスレッドのコールスタックに関する情報
- マシンのシステム情報およびビルド コンフィギュレーションなどのアプリケーション コンテキスト情報。
- クラッシュ時のログ出力。これは、デバイスのランタイム ログまたはプロジェクト エディタ ログです。
- キー / 値のペアを使用した、ゲームで提供される追加のコンテキスト。
- クラッシュ レポート クライアントを介してユーザーによって提供される追加のコメント。
以下は、クラッシュ レポート クライアントで表示されるクラッシュ レポートの例です。

ローカル クラッシュ レポートの場所
エディタのクラッシュ レポートは、ローカル マシン上にあるプロジェクトの「Saved/Crashes
」フォルダに格納されます。
または、クラッシュ レポートはユーザーのローカル マシン上の「C:\Users[Your Windows Username]\AppData\Local[Project Name]\Saved\Crashes
」にある場合もあります。
Unreal Engine のクラッシュの一般的な原因
発生するクラッシュ レポートの最も一般的な原因を以下に示します。以下のそれぞれは、クラッシュ レポーター クライアントを起動し、発生したクラッシュのタイプに関する詳細を提供するコールスタック上にメッセージを表示します。
クラッシュ ソース | 説明 | 画像の例 (クリックして拡大) |
---|---|---|
Crash | プログラムが処理できない問題が発生したため、シャットダウンしました。発生したクラッシュの理由は以下のとおりです。
|
|
Assert | デベロッパーがある条件に基づいてプログラムを意図的にクラッシュさせるためにコードに配置したアサート文によって発生しました。これは、予測可能な事柄がランタイム時に問題を引き起こすことを確認する際に役立ち、これによって問題を事前に把握することができます。次に例を示します。
Unreal Engine でのアサートの詳細については、アサートに関するドキュメント ページ を参照してください。 |
|
Ensure | Ensure ではある特定の条件をチェックしますが、false を解決した場合はクラッシュしません。代わりに、出力ログにメッセージを生成し、レポートを無人モードのクラッシュ レポーターに送信します。モニターしたい事柄がある場合に便利ですが、必ずしもクラッシュではありません。次に例を示します。
Unreal Engine での Ensure の詳細については、アサートに関するドキュメント ページ を参照してください。 |
カスタム コンテキストをクラッシュ レポートに追加する
クラッシュ レポートに追加される標準の情報に加えて、ゲーム プロジェクトでは ゲーム データ と呼ばれる独自のカスタム コンテキストを追加することも可能です。これは、ゲーム モード、ワールド内のプレイヤーの位置、またはバグの調査に重要な他のゲーム ステートに関する情報である場合があります。データは、キー / 値のペアや FPlatformCrashContext::SetGameData
関数を使用して追加されます。
GenericPlatformCrashContext.h
/** 任意のゲーム データをクラッシュ コンテキストに更新 (存在しない場合は追加) します (空の文字列を渡した場合、キーが削除されます)*/
CORE_API static void SetGameData(const FString& Key, const FString& Value);
エラーが発生する 前に、カスタム コンテキストが設定されることに注意してください。クラッシュ レポートが収集されると、ゲーム データ値の現在の状態が捕捉されレポートに書き込まれます。
例として、ゲームで新しいゲーム モードが呼び出されるときは常に、以下のようになります。
MyGameMode.cpp
void OnEnterMyGameMode()
{
FPlatformCrashContext::SetGameData(TEXT("GameMode"), TEXT("MyGameModeName"));
}
void OnExitMyGameMode()
{
FPlatformCrashContext::SetGameData(TEXT("GameMode"), FString());
}
ゲーム モード時のクラッシュには、以下の XMLdata が含まれています。
CrashContext.runtime-xml
<GameData>
<GameMode>MyGameModeName</GameMode>
</GameData>
クラッシュ レポーターのインフラストラクチャ
UE のクラッシュ レポートのインフラストラクチャは、以下のコンポーネントで構成されています。
-
エディタのビルドまたはゲームとともに配布される、ユーザーのマシン上の クラッシュ レポート クライアント。クラッシュ レポート クライアントは、クラッシュ ダンプ情報をエンドポイントに送信します。
-
クラッシュ レポートを管理、フィルター、格納するアプリケーションとコンポーネントを含む サーバー。
以下のセクションでは、これらのコンポーネントと組織用の設定方法について詳しく説明します。
クラッシュ レポーター クライアント
クラッシュ レポーター クライアントは別のプログラムで、両方のエディタ ビルドで使用され、オプションでユーザーのマシンでランタイム ビルドにパッケージ化されます。エディタまたはパッケージ化されたアプリケーションがクラッシュし、エンジンがクラッシュ レポートを生成すると、可能な場合、クラッシュ レポーター クライアントが起動されます。クラッシュ レポーターが無人モードでない場合、クラッシュ データを含むウィンドウが表示され、ユーザーにレポートを送信するかレポートの送信をオプトアウトするかを要求します。
クラッシュ レポーター クライアントをゲームにパッケージ化する
デフォルトでは、クラッシュ レポーター クライアントはパッケージ化されたゲームに含まれていません。これをパッケージ化されたビルドに追加するには、以下の手順に従います。
-
Unreal Editor で [Project Settings (プロジェクト設定)] を開いて [Project (プロジェクト)] > [Packaging (パッケージ化)] セクションに移動します。
-
[Advanced (詳細設定)] ドロップダウンを展開します。
-
[Include Crash Reporter (クラッシュ レポート機能を含む)] 設定を有効にします。
または、IncludeCrashReporter=True
をプロジェクトの「Config/DefaultGame.ini
」ファイルに追加します。
DefaultGame.ini
[/Script/UnrealEd.ProjectPackagingSettings]
IncludeCrashReporter=True
自動クラッシュ レポートを設定する
次のコンフィグ変数は、クラッシュ レポーターが自動的にクラッシュ レポートをサーバーに送信するかどうかを決定します。これらは、[CrashReportClient]
カテゴリの下にある「Engine.ini
」ファイルで設定できます。
コンフィグ変数 | 説明 |
---|---|
bAgreeToCrashUpload |
クラッシュ レポート クライアントがクラッシュ イベントを自動的に送信するかどうかを制御します。この変数は、Linux ビルドのみで使用されます。このデフォルト設定は、Windows と Mac ビルドでは false ですが、Linux ビルドでは true です。 |
bSendUnattendedBugReports |
無人のクラッシュ イベントを送信するかどうかを制御します。有効になっている場合、クラッシュ レポート クライアントはユーザーへの表示をスキップし、クラッシュ イベントをサーバーに自動的に送信します。この変数は、すべてのプラットフォームで機能し、デフォルトで true に設定されています。 |
DefaultEngine.ini
[CrashReportClient]
bAgreeToCrashUpload=false
bSendUnattendedBugReports=false
クラッシュ レポーター クライアントを設定する
プロジェクトごとにクラッシュ レポーター クライアントをカスタマイズできます。CrashReportClient 設定は、会社名やサーバー URL を含め、クラッシュ レポーターの動作と概観の両方を変更します。クラッシュ レポーター クライアントをカスタマイズするには、次のセクションをプロジェクトの「DefaultEngine.ini
」に追加します。
DefaultEngine.ini
[CrashReportClient]
CompanyName="[Your Company Name]"
DataRouterUrl="[URL of your crash report server]"
UserCommentSizeLimit=4000
bAllowToBeContacted=true
bSendLogFile=true
上記は、CrashReportClient のエントリ例であり、値のすべてが必須として表示されているわけではありません。
コンフィグ変数のリファレンス
以下に使用可能な設定の表を示します。これらは、[CrashReportClient] セクションの下にプロジェクトの「Config/DefaultEngine.ini」ファイルに追加されます。
プロパティ | 説明 | デフォルト値 |
---|---|---|
CrashReportClientVersion | クラッシュ レポート クライアントのバージョン番号。 | なし |
CompanyName | 「Allow contact」テキストに表示される会社名を設定します。空の場合、テキストは特定の会社を表示しません。 | なし |
DataRouterUrl | クラッシュ レポートを受信するサーバー。 | なし |
UserCommentSizeLimit | ユーザーがコメント フィールドで入力を許可される文字の最大数。 | 4000 文字 |
bSendLogFile | 有効にすると、[Send log file (ログ ファイルを送信)] チェックボックスがデフォルトで有効になります。 | true |
bHideLogFilesOption | 有効にすると、[Send log file (ログ ファイルを送信)] チェックボックスが表示されます。 | false |
bAllowToBeContacted | 有効にすると、[Allow contact (連絡を許可)] チェックボックスがデフォルトで有効になります。 | true |
bIsAllowedToCloseWithoutSending | ユーザーがレポートを送信せずにダイアログを閉じることを許可されるかどうかを制御します。 | true |
bShowEndpointInTooltip | 送信ボタンに表示されるツールチップが、クラッシュを送信するドメインを表示するかどうかを制御します。 | true |
bIsAllowedToCopyFilesToClipboard | [Copy files (ファイルをコピー)] ボタンを表示するかどうかを制御します。ユーザーが診断ファイルをクリップボードにコピーするのを許可します。Windows プラットフォームでのみ使用できます。 | false |
bHideRestartOption | [Send and Restart (送信して再起動)] ボタンを表示するかどうかを制御します。 | true |
クラッシュ イベントが送信される場所
エディタ ビルドには、常にクラッシュ レポート クライアントが含まれていますが、これをパッケージ化されたビルドに含めることはオプションです。クラッシュ レポート クライアントは、発生した場所のビルド タイプに応じて異なる宛先にクラッシュ レポートとテレメトリを送信します。
パッケージ化されたビルドは常に、プロジェクトに指定されたクラッシュ レポート機能のコンフィギュレーション値を使用します。「クラッシュ レポーター クライアントを設定する」を参照してください。UE 5.4 以降、Epic Games では、パッケージ化されたゲームがエンド ユーザー向けなのか、テスト用なのか判定する方法がないため、パッケージ化されたビルドが開発ビルドかシッピング ビルドかに関係なく、パッケージ化されたビルドからレポートを受信しません。
デフォルトでは、Epic Games Launcher から配布されたエディタ ビルドは、Unreal Engine の公開リリース版の問題の特定に役立てるために、Epic Games にバグ レポートを送信します。無人バグ レポートをオプトアウトするには、次の手順に従います。
-
Unreal Editor で [Editor Preferences (エディタの環境設定)] を開きます。
-
[Privacy (プライバシー)] > [Bug Reports (バグ レポート)] カテゴリに移動します。
-
[Don’t Send (送信しない)] を選択します。

ユーザーは、クラッシュが発生したときにクラッシュ レポートを送信するように促されますが、クラッシュ レポーター クライアントを閉じるか、[Close Without Sending (送信しないで閉じる)] をクリックして、これらをオプトアウトすることができます。
ソースから作成されたエディタ ビルドは、クラッシュ レポート データを Epic Games に送信しません。
次の表は、UE がさまざまなタイプのビルドでクラッシュ イベントを送信する場所をまとめています。
ビルド タイプ | ランチャー ビルド | ソース ビルド |
---|---|---|
開発エディタまたはゲーム | Epic Games/カスタム | なし/カスタム |
パッケージ化されたタイトル | なし/カスタム | なし/カスタム |
クラッシュ レポート サーバー
ほとんどのクラッシュ レポーターを実行するには、リモート ユーザーのクラッシュ レポートを受信し、これらをシンボル化できるサーバーを設定する必要があります。UE には、ソース コードまたはバイナリを含むコンポーネントが含まれていません。ただし、クラッシュ レポート クライアントのソース コードを使用することは、自分のカスタム ソリューションを作成するための開始点になります。デプロイ可能なサードパーティのクラッシュ レポート サービスもいくつかあります。
以下のクラッシュ レポート サービスが UE のコミュニティ内でよく使用されます。それぞれに UE のクラッシュ レポーターに統合するためのドキュメントがあります。