メインコンテンツまでスキップ

カスタムクラッシュグループ化

Last updated on July 30, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

AccelByte Development Toolkit(ADT)のカスタムクラッシュグループ化により、複数のクラッシュイベントを1つのクラッシュイシューにグループ化することで、クラッシュレコードを管理できます。この機能を使用すると、同一のコールスタック行を持つクラッシュイベントがグループ化されます。これにより、開発者は同じ根本原因を持つバグを修正できます。

ADTのカスタムクラッシュグループ化は次のことに役立ちます:

  • 同一のコールスタック行の範囲を最小1から最大30まで設定します。
  • コールスタックの特定の行を無視し、コールスタックリストから省略します。
備考

クラッシュグループ化は新しいクラッシュにのみ適用されます。

コールスタック行の範囲を設定する

コールスタック行の範囲を設定するには、以下の手順に従ってください:

  1. ADT Webにログインします。
  2. サイドバーからGame Settingsメニューをクリックします。
  3. Global Crash Configs設定を開き、Crash Groupingセクションまでスクロールします。
  4. **+アイコンをクリックして増やし、-**をクリックして一致させる行数を減らします。
  5. Save Changesボタンをクリックして変更を保存します。
  6. 確認ポップアップでConfirmボタンをクリックします。

コールスタック行を無視する

カスタムルールを設定すると、システムはコールスタックを無視し、Call stackタブに表示されなくなります。

無視ルールを設定するには、次の手順に従います:

  1. ADT Webにログインします。
  2. サイドバーからGame Settingsメニューをクリックします。
  3. Global Crash Configs設定を開き、Crash Groupingセクションまでスクロールします。
  4. Add Ruleボタンをクリックします。
  5. Platform列をクリックします。
  6. ドロップダウンから利用可能なプラットフォームを選択します。
  7. ゲームモジュールのコード(例:LyraGame)でモジュールを入力します。
  8. 無視するメッセージ(例:UEngine::PerformError*)を入力します。末尾の * は重要です。パターン構文を参照してください。
  9. Save Changesボタンをクリックします。
  10. 確認ポップアップでConfirmをクリックします。

無視ルールを記述する

コールスタックは解析され、クラッシュに含まれます。コールスタックには、関数、場所、行番号が含まれます。コールスタックの無視ルールは3つのコンポーネントで構成されます:

  • Platform:ビルドのプラットフォーム。ゲームプラットフォームに応じて選択します。ドロップダウンには、ビルドのアップロードされたプラットフォームのみが表示されます。

  • Module:コードアドレスを含むゲームの実行可能モジュール。

  • Message:クラッシュ情報としてモジュールから送信される例外メッセージ。

Set call stack lines

コールスタックの各フレームは、module!message という形式の関数文字列を持ち、感嘆符(!)で区切られています。! より前の文字列がモジュール、! より後ろの文字列がメッセージです。! 文字がない場合、文字列全体がモジュールとして扱われ、メッセージは空になります。

ルールがコールスタック行に一致するのは、3つのコンポーネントすべてが一致した場合のみです(Platform AND Module AND Message):

"Platform: windows" AND "Module: LyraGame" AND "Message: UEngine::PerformError*"

パターン構文

ModuleMessage には glob(ワイルドカード)パターンを指定します。正規表現ではありません。

パターンはファイルパスではなくフラットな文字列と照合されるため、ディレクトリやパス区切り文字に関する動作はありません。*:. を含む任意の文字に一致します。

すべてのパターンには、次の2つの規則が適用されます:

  • パターンは値の一部ではなく、値全体に一致する必要があります。 パターンは、モジュールまたはメッセージの文字列全体と比較されます。UEngine::PerformError は、フレーム UEngine::PerformError(wchar_t const*, FOutputDevice&) には一致しません。フレームの末尾に余分な文字があるためです。前方一致させるには、末尾に * を追加して UEngine::PerformError* としてください。
  • 一致は大文字と小文字を区別しません。 LyraGamelyragameLYRAGAME はすべて同等に扱われます。

サポートされているワイルドカードは次のとおりです:

パターン一致する対象
*0文字以上の任意の文字列UEngine::*UEngine::PerformError() に一致します
?任意の1文字?yraGameLyraGameMyraGame に一致します
[a-f]指定した範囲内の1文字[AIUEO]EngineUEngine に一致します
[!a-f]指定した範囲に含まれない1文字[!L]yraGameLyraGame に一致しません
{a,b}カンマ区切りの候補のいずれか1つ{Lyra,Shooter}GameLyraGame に一致します

したがって次のルールは、モジュールが任意の1文字に続いて yra、さらに任意の文字列が続くフレームで、かつメッセージが AIUEO のいずれかに続いて Engine::Perform で始まるフレームを無視します:

"Platform: windows" AND "Module: ?yra*" AND "Message: [AIUEO]Engine::Perform*"
警告

正規表現の構文はサポートされていません。正規表現で特別な意味を持つ文字(.+|^$() など)は、そのままの文字として一致します。これはC++のシンボルで特に重要です。メッセージ UEngine::PerformError() は、メッセージが括弧を含めて厳密に UEngine::PerformError() であるフレームにのみ一致します。実際のフレームには引数リストが含まれるため、UEngine::PerformError* を使用してください。

! はモジュールとメッセージを区切る文字であるため、! を含む Message パターンは一致することがありません。

{} 内のカンマの後にスペースを入れないでください。スペースはそのままの文字として一致するため、{Lyra, Shooter}GameLyraGame には一致しますが、ShooterGame には一致しません。最初の候補では引き続き一致するため、見落としやすい点です。

また、角かっこが閉じられていることを確認してください。閉じられていない [ は無効なパターンです。

FAQ

Q: コールスタック行の値を30に設定するとどうなりますか?

A: システムは、まったく同じ30行のコールスタックを持つクラッシュのみをグループ化します。15行目だけが異なる場合でも、別のクラッシュイシューにグループ化されます。

Q: メッセージ値を空のままにするとどうなりますか?

A: システムは、モジュールをメイン値として持つコールスタック行のみを検索します。

"Platform: windows" AND "Module: LyraGame"

無視されるコールスタックは、追加のメッセージなしでLyraGame!になります。