Skip to main content

Custom crash grouping

Last updated on October 23, 2024

Overview

AccelByte Development Toolkit's (ADT) custom crash grouping enables you to manage your crash records by grouping several crash events into one crash issue. When you use this feature, crash events with identical call stack lines will be grouped together. This helps developers fix bugs with the same root cause.

ADT's Custom crash Grouping will help you:

  • Set the range of identical call stack lines from min 1 - max 30.
  • Ignore certain lines of the call stack and omit them from the call stack list.
info

Crash grouping will be applied to new crashes only.

Set range of call stack lines

To set the range of call stack lines, follow the steps below:

  1. Log in to ADT Web.
  2. Click on the Game Settings menu from the sidebar.
  3. Open the Global Crash Configs settings and scroll down to Crash Grouping Section.
  4. Click on the + icon to increase and the - to reduce the number of lines to be matched.
  5. Click on the Save Changes button to store your changes.
  6. Click on the Confirm button on the confirmation pop-up.

Set call stack lines

Ignore call stack lines

Setting up custom rules will make the system ignore the call stack, and they will not be shown on the Call stack tab.

To set an ignore rule, follow these steps:

  1. Log in to ADT Web.
  2. Click on the Game Settings menu from the sidebar.
  3. Open the Global Crash Configs settings and scroll down to Crash Grouping Section.
  4. Click Add Rule button.
  5. Click on the Platform column.
  6. Select the available platform from the dropdown.
  7. Fill out the module with your game module's code (e.g., LyraGame).
  8. Fill out the message you want to ignore (e.g., UEngine::PerformError()).
  9. Click the Save Changes button.
  10. Click Confirm on the confirmation pop-up.

Set call stack lines

Write ignore rules

The call stacks parse and are included in crashes. The call stacks contain function, location, and line number. Ignore call stacks rules consist of three components:

  • Platform: The platform of your build. Select according to your game platform. The dropdown only shows uploaded platforms of your builds.

  • Module: Your game's executable module that contains the code address.

  • Message: An exception message sent by the module as crash information.

Set call stack lines

The function string includes a module!message and is separated by an exclamation mark (!). The string before the is the module; if there is no "!" character, then the whole string is a module.

Our code reads the components as:

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

This means that it only matches the exact values of the rules. If you somehow mistyped the module or message, it won't ignore the call stack lines.

That's why there is a regex functionality to fill the module and message. You can use a wildcard (* and ?), character range matches [a-f], or any other regex function.

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

FAQ

Q: What happens if I set the call stack lines value to 30?

A: The system will only group the crashes with exactly the same 30 lines of call stacks. Even if only the 15th line is different, it would be grouped into the different crash issue.

Q: What if I left the message value empty?

A: The system will only look for call stack lines with the module as its main value.

"Platform: windows" AND "Module: LyraGame" 

The call stacks being ignored would be LyraGame! without any additional message.