Breadcrumbsを使用してクラッシュを調査する方法(Unreal Engine)
注釈:本資料はAI技術を用いて翻訳されています。
目的
クラッシュ詳細ページのBreadcrumbsタイムラインを使用して、Unreal Engineゲームでクラッシュが発生する前のイベントの順序を把握します。イベントタイプによるフィルタリング、キーワードフィルターやカスタムフィルターの使用、セッショングラフ上のパフォーマンスデータとのイベントの相関付けも行えます。
前提条件
- Unreal EngineゲームがADTに接続されており、クラッシュレポートが取得されていること。
- ADTでクラッシュレポートを表示する権限を持っていること。
- 追加の設定やコード変更は不要です。関連するログデータを持つすべてのクラッシュに対して、Breadcrumbsは自動的に利用可能になります。
手順
ステップ1:クラッシュ詳細ページを開く
- ADTでHealthに移動し、Crash Insightsを開きます。
- クラッシュリストから調査したいクラッシュを選択します。
- クラッシュ詳細ページが開きます。上部にCallstack | General | Breadcrumb | Crash Video | Hardware | Log | Modules | Crash Contextというタブナビゲーションが表示されます。
- Breadcrumbタブをクリックします。
タイムラインは自動的に読み込まれます。有効にするための操作は必要ありません。
表示される内容:
クラッシュイベントは、タイムラインの最上部に明確なマーカーとして表示されます。ログエントリはその下に時系列の逆順で表示され、最も新しいイベントがクラッシュマーカーに最も近く、最も古いイベントが一番下に表示されます。
デフォルトでは、タイムラインにはErrors、Warnings、Hitch(FPS低下)の3つのカテゴリのエントリが表示されます。他のカテゴリも利用可能ですが、有効にするまでは非表示になっています。
エントリのリストが長いクラッシュの場合、下にスクロールするとタイムラインが自動的に追加のエントリを読み込みます。「Load more」ボタンをクリックする必要はありません。
ステップ2:タイムラインを読み解く
タイムラインの各エントリには、次の情報が表示されます。
- カテゴリバッジ — 色のインジケーターとテキストラベル:赤+「Error」、黄+「Warning」、オレンジ+「Hitch」、紫+「ADT Activity」、青+「Info」、藍色+「Engine」、緑+「Game」
- Description — ログエントリからの短いメッセージ
- Relative time — クラッシュの何分前にイベントが発生したか(例:「3 minutes before crash」)
すべての時刻はUTCで表示されます。
エントリの全文を読むには、それをクリックします。エントリがインラインで展開され、ログの詳細がすべて表示されます。もう一度クリックすると折りたたまれます。長いメッセージは、展開されたエントリでもパフォーマンスグラフのピンツールチップでも、切り捨てられることなく複数行に折り返されます。
エントリがGame Event(ADTGameEventを含むログ行)の場合、メッセージ内のname=valueペアが視覚的にハイライトされます。例:Event=MissileFireRejected Player=BOT Reason=MissileLimit。これにより、生のログテキストを解析しなくても構造化されたイベントデータを読み取ることができます。
ステップ3:タイムラインをフィルタリングする
フィルターパネルはタイムラインのすぐ上にあります。これを使用して、表示するカテゴリを制御します。
標準フィルターカテゴリ(チェックボックス):
| カテゴリ | デフォルトの状態 | 表示内容 |
|---|---|---|
| Errors | ON | Fatal: および Error: の重大度のエントリ |
| Warnings | ON | Warning: の重大度のエントリ |
| Hitch | ON | ADTが検出したFPS低下イベント([HitchDetector] のエントリ) |
| Game Events | OFF | ADTGameEvent キーワードを含むログ行 |
| Engine | OFF | マップロードやワールド準備完了通知などのエンジンライフサイクルイベント |
| ADT Activity | OFF | より優先度の高いカテゴリに一致しないADT SDKのログエントリ |
| Informational | OFF | その他すべての表示レベルのエントリ |
カテゴリのチェックボックスをオン・オフして、該当するエントリを表示・非表示にします。タイムラインは1秒以内に更新され、ページの再読み込みは不要です。
その他のログカテゴリにアクセスするには:
標準のチェックボックスの下には、「Show other log types」というラベルの付いた展開可能なセクションがあり、この特定のクラッシュのログデータに含まれる追加のログカテゴリがすべて表示されます。このセクションを展開し、任意のカテゴリをチェックすると、該当するエントリがタイムラインに追加されます。
すべてのフィルターをデフォルトの状態にリセットするには:
フィルターパネルのResetボタンをクリックします。これにより、Errors、Warnings、Hitchが再びONになり、その他のすべてのカテゴリがOFFに戻ります。リセットしてもカスタムフィルターチップは削除されません。影響を受けるのは標準のチェックボックスのみです。
フィルターの選択内容は、同じブラウザセッション内でクラッシュレポート間を移動しても保持されるため、別のクラッシュを開くたびにフィルターを再設定する必要はありません。
ステップ4:キーワードでタイムラインを検索する
検索入力欄は、フィルターパネルと並んでタイムラインの上にあります。
任意のキーワードを入力すると、そのテキストを含むDescriptionのエントリにタイムラインが絞り込まれます。入力するとすぐにタイムラインが更新されます。
キーワード検索は、有効なフィルターチェックボックスと併せて機能し、両方が同時に適用されます。エントリが表示されるには、有効なフィルターまたはキーワードのいずれかに一致する必要があります。
検索をクリアしてフィルター適用後の完全なビューに戻すには、検索入力欄のテキストを削除します。
ステップ5:カスタムフィルターを作成する
カスタムフィルターを使用すると、特定のプレイヤー、エンティティ、またはイベントに関連するすべてのログエントリを表示できます。
- フィルターパネルで、標準のチェックボックスと「Show other log types」セクションの下にある**Add filter...**入力欄を見つけます。
- キーワードまたは
key=valueのペア(例:playerId=bob)を入力し、Enterキーを押します。 - 入力した語句のラベルが付いたフィルターチップがフィルターパネルに表示されます。そのテキストを含むメッセージを持つすべてのエントリが、すぐにタイムラインに表示されます。
注:
=記号を含む語句を入力すると、ADTはメッセージにそのkey=valueという文字列が完全に含まれるエントリを照合します(大文字と小文字は区別されません)。=記号のない語句の場合、ADTはそれをログメッセージ全体に対する単純なキーワード一致として扱います。- 複数のチップを同時に有効にできます。標準のチェックボックス、カスタムチップ、キーワード検索など、有効なフィルターはすべてOR条件で適用されます。いずれか1つにでも一致すればエントリは表示されます。
- 現在のクラッシュログで一致するものがないチップには「0 matches」というインジケーターが表示され、その語句が見つからなかったことがわかります。
- チップを削除するには、その上の × をクリックします。
- クラッシュ詳細ページから移動したり、ブラウザを更新したりすると、カスタムフィルターチップはクリアされます。
ステップ6:イベントをパフォーマンスグラフと関連付ける
このクラッシュセッションの各ログエントリは、セッションパフォーマンスグラフ上にクリック可能なピンとして表示されます。
- クラッシュ詳細ページのGeneralタブでSession IDフィールドを見つけます。
- Session IDのリンクをクリックします。ホバーすると「View session performance graph with breadcrumb pins.」というツールチップが表示されます。
- セッション詳細ページがBasic Profilingタブで開きます。パフォーマンスグラフには、セッションのCPU、GPU、Memory、Frame Rateが表示されます。各ログエントリは、チャートの上部に固定行として表示されるのではなく、イベント発生時のメトリクスの値の位置に、そのメトリクスの折れ線上に直接、円形のピンとして表示されます。
ピンの色は、タイムラインのカテゴリカラーと一致します。
| 色 | カテゴリ |
|---|---|
| 赤 | Error |
| 黄 | Warning |
| オレンジ | Hitch |
| 紫 | ADT Activity |
| 青 | Informational |
| 藍色 | Engine |
| 緑 | Game Event |
クラスター化されたピン: 同じ1秒間のウィンドウ内に3件以上のエントリが発生すると、それらは件数バッジ(例:「+4」)が付いた1つのピンにまとめられます。バッジをクリックすると、そのクラスター内のすべてのエントリのリストが開き、それぞれがカテゴリに対応する色分けされたドットとともに表示されます。
1つのピンをクリックすると、イベントカテゴリ(対応する色分けされたドット付き)、description、相対的なタイミングを示すサマリーポップオーバーが表示されます。これを読むためにグラフビューを離れる必要はありません。ピン留めされたエントリがクラッシュそのものである場合、そのクラッシュイベントはBreadcrumbタブでの表示と同じ形式でポップオーバーに表示されます。
ここに表示されるエントリのタイムスタンプは、常にクラッシュヘッダーおよびBreadcrumbタブに表示されるタイムスタンプと一致します。
ピンまたはクラスターのポップオーバーを閉じるには: ポップオーバー内の閉じる(✕)ボタンをクリックするか、ポップオーバーの外側をクリックします。
クラッシュ詳細ページに戻るには、ブラウザの戻るボタンまたはアプリ内の戻るボタンを使用します。
想定される表示
タイムラインにクラッシュマーカーのみが表示される場合: このクラッシュのすべてのログエントリは、現在非表示になっているカテゴリに含まれています。フィルターパネルを確認して追加のカテゴリを有効にするか、Resetをクリックしてデフォルトの状態に戻してください。
タイムラインが空の場合: このクラッシュには利用可能なログデータがありません。これは、Breadcrumbs機能がデプロイされる前に取得された古いクラッシュや、ログ出力がなかったセッションで発生することがあります。クラッシュサマリーやその他のタブは引き続き問題なくアクセスできます。
タイムラインが読み込み中の場合: データが取得されている間、タイムラインの領域にスピナーが表示されます。タイムラインは自動的に読み込まれるため、ページを更新する必要はありません。
タイムラインの読み込みに失敗した場合: 10秒後、Try againボタンとともにエラー状態が表示されます。待機中や再試行中も、クラッシュ詳細ページの他のセクションには引き続きアクセスできます。
トラブルシューティング
Game Eventsを有効にしたが、エントリが表示されない。
このセッションのクラッシュログには、ADTGameEventキーワードを含むログ行がありません。Game Eventsは既存のUE_LOG呼び出しから表示されます。セッション内にそのキーワードを含む呼び出しがなければ、表示するエントリはありません。このチェックボックスは、今後そのキーワードを含むクラッシュのために引き続き利用可能です。
「After crash」というラベルの付いたエントリが表示される。 「After crash」バッジが付いたエントリは、クラッシュの瞬間より後のタイムスタンプを持っています。これは、ログデータのタイミングに異常があることを示しています。可視性を確保するためエントリは引き続き表示されますが、タイムライン上での位置については注意して扱ってください。
カスタムフィルターチップに「0 matches」と表示される。 入力した語句は、この特定のクラッシュのログメッセージには出現しません。チップは有効なままで、他のクラッシュレポートにその語句が出現した場合はそちらで一致します。
パフォーマンスグラフにピンが表示されない。 これは、セッションのパフォーマンスデータが取得されなかった場合、またはクラッシュログとパフォーマンスグラフの間にタイミングの不一致があり、エントリをプロットできなかった場合に発生することがあります。タイミングの不一致の影響を受けたエントリは、グラフ上に配置できない場合でも、breadcrumbタイムラインでは引き続き表示されます。
パフォーマンスグラフは読み込まれるが、データが表示されない。 このセッションでは、セッションのパフォーマンスデータが取得されませんでした。グラフには標準の空の状態が表示されます。Breadcrumbのピンは、グラフデータとbreadcrumbデータの両方が利用可能な場合にのみ表示されます。
「Show other log types」セクションが表示されない。 このセクションは、クラッシュログに6つの標準カテゴリ(Errors、Warnings、Hitch、Game Events、ADT Activity、Informational)以外の追加のログカテゴリが含まれている場合にのみ表示されます。このセクションが表示されない場合、このクラッシュログ内のすべてのログカテゴリは、すでに標準のフィルターパネルに含まれています。
次のステップ
- Breadcrumbs機能ドキュメント — タイムラインの仕組み、エントリの分類方法、サポートされている内容について理解する