一句话:提出 DeepAnalyze,用多任务序列标注从栈跟踪中定位崩溃归责帧,并可跨应用少样本迁移。
崩溃定位是调试的关键步骤,但面对海量异构应用、平台与根因时极具挑战。WER 等错误报告系统通常依赖人工规则与启发式来定位导致崩溃的归责帧,而新应用和新环境使规则开发与维护困难。本文先对 WER 中 36.2 万次崩溃及其归责方法进行大规模实证研究,获得崩溃发生与归责规律的洞见;据此提出 DeepAnalyze,一种从栈跟踪中识别归责帧的多任务序列标注方法。作者在四个 Microsoft 应用逾百万真实崩溃上评估,表明该模型不仅能准确本地化同组应用的崩溃,还能在零到极少额外训练数据下为其他应用启动崩溃定位。
Crash localization, an important step in debugging crashes, is challenging when dealing with an extremely large number of diverse applications and platforms and underlying root causes. Large-scale error reporting systems, e.g., Windows Error Reporting (WER), commonly rely on manually developed rules and heuristics to localize blamed frames causing the crashes. As new applications and features are routinely introduced and existing applications are run under new environments, developing new rules and maintaining existing ones become extremely challenging. We propose a data-driven solution to address the problem. We start with the first large-scale empirical study of 362K crashes and their blamed methods reported to WER by tens of thousands of applications running in the field. The analysis provides valuable insights on where and how the crashes happen and what methods to blame for the crashes. These insights enable us to develop Deep-Analyze, a novel multi-task sequence labeling approach for identifying blamed frames in stack traces. We evaluate our model with over a million real-world crashes from four popular Microsoft applications and show that DeepAnalyze, trained with crashes from one set of applications, not only accurately localizes crashes of the same applications, but also bootstrap crash localization for other applications with zero to very little additional training data.