Programmers are all too familiar with the time-consuming efforts of analyzing the crash and error reports they receive during new feature development, game testing, or released play. Understanding what happened and whether it matters takes a lot of back and forth between the programmer and player who identified the issue. The Backtrace Error Management Platform was created to automate the collection and analysis of crash and exception reports, cutting the time for these tasks in half so programmers can get to work fixing gameplay-impacting issues more quickly.
Let’s explore how Backtrace helps teams find, analyze, and solve crashes and errors.
The first thing programmers or managers who are triaging issues need to determine is which component broke and under what conditions. This requires automating the capture of crashes or exceptions, including a full stack trace with contextual information such as environment variables, system information, custom metadata, log entries, attached screenshots or videos. The most difficult-to-diagnose problems often require a more sophisticated analysis of the system runtime to understand detailed information such as the state of all the running threads, which modules were loaded, and which versions of critical device drivers were in use.
Backtrace provides this with their capture libraries, which can be embedded in games for many types of platforms, including consoles like PS4, Xbox One, and Nintendo Switch, streaming services like Stadia, desktops like PC or Mac, mobile devices with iOS and Android, and web platforms with WebGL. Backtrace also supports back-end platforms such as MultiPlay and technologies like Docker Containers and Kubernetes, making collection a configurable option on those platforms.
The obvious way to prioritize crashes is to sort them by how frequently they occur. That’s the right place to start, but there are other things to keep in mind:
Backtrace provides teams with tools to better understand what’s most important now:
To perform sophisticated debugging analysis and reporting, game developers need to ask questions like the following:
To enable this, all process statistics need to be exposed, from interrupts to memory usage and open descriptors. Programmers must be free to add their own attributes in an ad hoc fashion, and the system needs to provide flexible aggregation and analysis on any number of hundreds of dimensions.
These types of analytic workloads (large compressible data sets, queries that require full scans and materialize a small subset of columns) thrive on columnar databases. The Backtrace system was designed for this purpose, and it allows some of the largest gaming studios in the world to get real-time feedback while performing robust fold operations and introspection into value distribution.
To gain more actionable insights, Backtrace also provides a knowledge base of instruction sets and languages, as well as a rule system that allows the definition of static analysis rules on functions. The knowledge base consists of constraints for the underlying instruction set including alignment, permissions, storage requirements, and flags. This provides teams with insights such as:
With Backtrace integrated into the game development lifecycle, game programmers can cut the time they spend solving crashes and events in half since the system helps detect and resolve the most difficult-to-diagnose issues. Backtrace is a Unity Verified Solutions Partner. Being a Verified Solution Partner means that Backtrace has been authenticated by Unity to ensure that its SDK is optimized for the latest version of Unity Editor and provides a seamless experience for Unity developers. Click here to sign up for a free trial, or to learn more about their solution.