使用Backtrace简化游戏错误报告

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.

程序员对于在新功能开发,游戏测试或发行的游戏中分析收到的崩溃和错误报告所花费的时间非常熟悉。 了解发生了什么以及它是否重要需要在确定问题的程序员和玩家之间进行大量的来回操作。 Backtrace错误管理平台的创建是为了使崩溃和异常报告的收集和分析自动化,从而将这些任务的时间缩短了一半,因此程序员可以更快地解决影响游戏玩法的问题。

Let’s explore how Backtrace helps teams find, analyze, and solve crashes and errors.  

让我们探索Backtrace如何帮助团队发现,分析和解决崩溃和错误。

确定发生了什么 (Determining what happened)

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. 

Backtrace为其提供了捕获库,这些捕获库可以嵌入到许多类型的平台的游戏中,包括PS4,Xbox One和Nintendo Switch等控制台,Stadia等流服务,PC或Mac等台式机,带有iOS和Android的移动设备,和带有WebGL的Web平台。 Backtrace还支持诸如MultiPlay之类的后端平台以及诸如Docker Containers和Kubernetes之类的技术,从而使收集成为这些平台上的可配置选项。

有关系吗? (Does it matter?)

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:

优先考虑崩溃的明显方法是按发生频率对它们进行排序。 那是开始的正确地方,但要记住其他一些事情:

  • Some crashes aren’t going to be fixable – e.g., a PC crash could be caused by an old graphic driver, or game crashes might be caused by exploits or antivirus software.

    某些崩溃无法修复–例如,PC崩溃可能是由旧的图形驱动程序引起的,或者游戏崩溃可能是由漏洞利用或防病毒软件引起的。

  • Some issues are already under investigation, and you need to make sure you have some way of communicating that – e.g., through a link to your bug tracking system.

    一些问题已经在调查中,您需要确保有某种沟通的方式-例如,通过指向错误跟踪系统的链接。

  • Some crashes have a very low user impact – e.g., crashes after the main window has shut down.

    某些崩溃对用户的影响很小-例如,在主窗口关闭后崩溃。

  • Some issues are more high-impact than others – e.g., regressions, or server crashes often fall into this category.

    有些问题的影响更大,例如,回归或服务器崩溃通常属于此类。

Backtrace provides teams with tools to better understand what’s most important now: 

Backtrace为团队提供了更好地了解现在最重要的工具

  • View and Manage by State – Use filter shortcuts like Open, In Progress, Muted, or Resolved to view fingerprints that are relevant to your activity in the Triage view. 

    按状态查看和管理–使用“打开”,“进行中”,“静音”或“已解决”等过滤器快捷方式在“分类”视图中查看与您的活动相关的指纹。

  • Regression Detection – Programmers can set criteria such as “Resolved Until seen in version x.y.z or greater” so the system reopens issues if they reappear.

    回归检测–程序员可以设置标准,例如“在xyz或更高版本中可以解决,直到解决”,这样,如果系统重新出现问题,系统就会重新打开。

  • Collaboration and Integration – User assignment, linking to issue tracking systems, comments, and tags can all help you to understand the state of things under investigation.

    协作和集成–用户分配,链接到问题跟踪系统,评论和标签都可以帮助您了解所调查事物的状态。

  • Tag crashes by team – Apply some regex rules to tag crashes as being in one or more categories, such as rendering, networking, or physics.

    按团队标记崩溃–将某些正则表达式规则应用于标记崩溃,因为它们属于一种或多种类别,例如渲染,网络或物理。

  • Flame graphs – These visual tools give programmers an overall picture of where problems are happening. Teams find them useful for visualizing the scale of different types of crashes.

    火焰图–这些可视化工具为程序员提供了发生问题的位置的总体视图。 团队发现它们对于可视化不同类型的崩溃的规模非常有用。

如何解决? (How can it be fixed?)

To perform sophisticated debugging analysis and reporting, game developers need to ask questions like the following:

为了执行复杂的调试分析和报告,游戏开发人员需要提出以下问题:

  • What patterns of bits are set in a faulting address?

    在故障地址中设置了哪些位模式?

  • What is the distribution of process uptime?

    流程正常运行时间的分布是什么?

  • What is the highest memory consumer in a snapshot?

    快照中最大的内存消耗者是什么?

  • What are the unique values of an attribute where a group matches a regular expression?

    组与正则表达式匹配的属性的唯一值是什么?

  • What is a histogram of occurrences for a set of traces of a certain age by group?

    按年龄分组的一组特定年龄的痕迹的发生的直方图是什么?

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. 

这些类型的分析工作负载(大型可压缩数据集,需要完全扫描并具体化一小列列的查询)在列式数据库中蓬勃发展。 Backtrace系统就是为此目的而设计的,它可以使世界上一些最大的游戏工作室在执行强大的折叠操作和对价值分配进行自省的同时获得实时反馈。

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: 

为了获得更多可行的见解,Backtrace还提供了指令集和语言的知识库,以及允许对功能定义静态分析规则的规则系统。 知识库由基础指令集的约束组成,包括对齐,权限,存储要求和标志。 这为团队提供了一些见解,例如:

  • Identification of heap corruption through forensic analysis of allocator data structures and pointers

    通过对分配器数据结构和指针的取证分析来识别堆损坏

  • Stale pointer detection that sweeps across all pointers and performs heap and type analysis to detect inconsistencies

    失效的指针检测可扫过所有指针,并执行堆和类型分析以检测不一致之处

  • Malware detection that scans executable code and memory of code paths associated with faulting regions to detect ROP chains

    恶意软件检测,扫描可执行代码和与故障区域关联的代码路径的内存,以检测ROP链

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.

通过将Backtrace集成到游戏开发生命周期中,游戏程序员可以将花费在解决崩溃和事件上的时间减少一半,因为该系统有助于检测和解决最难以诊断的问题。 Backtrace是Unity验证解决方案合作伙伴。 成为经过验证的解决方案合作伙伴,意味着Backtrace已通过Unity认证,以确保其SDK已针对最新版本的Unity编辑器进行了优化,并为Unity开发人员提供了无缝的体验。 单击此处注册免费试用 ,或了解有关其解决方案的更多信息

翻译自: https://blogs.unity3d.com/2020/06/11/simplify-game-error-reporting-with-backtrace/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值