一句话:提出基于代码分离与异常抛出摘要的框架特定崩溃故障定位方法,生成紧凑可解释候选集。
许多应用依赖框架或库,框架 API 演化与复杂实现导致大量发布后崩溃。现有方法依赖调用图追踪或历史修复记录,受限于调用图完整性与记录可获取性,且常只处理人工建模的异常类型。本文提出基于代码分离的定位方法,弱依赖调用图且无需先验知识:一条崩溃堆栈及描述消息可映射到框架中确定的异常抛出点,语义分析可揭示触发过程根因。作者设计异常抛出摘要(ETS),静态计算与异常触发相关的关键变量和 API,并在应用代码中追踪它们以得到排序候选。Android 框架崩溃定位实验中,CrashTracker 的 MRR 为 0.91,精度优于 Anchor,候选集紧凑且可解释。
Nowadays, many applications do not exist independently but rely on various frameworks or libraries. The frequent evolution and the complex implementation of framework APIs induce lots of unexpected post-release crashes. Starting from the crash stack traces, existing approaches either perform application-level call graph (CG) tracing or construct datasets with similar crash-fixing records to locate buggy methods. However, these approaches are limited by the completeness of CG or dependent on historical fixing records, and some of them only focus on specific manually modeled exception types. To achieve effective debugging on complex framework-specific crashes, we propose a code-separation-based locating approach that weakly relies on CG tracing and does not require any prior knowledge. Our key insight is that one crash trace with the description message can be mapped to a definite exception-thrown point in the framework, the semantics analysis of which can help to figure out the root causes of the crash-triggering procedure. Thus, we can pre-construct reusable summaries for all the framework-specific exceptions to support fault localization in application code. Based on that idea, we design the exception-thrown summary (ETS) that describes both the key variables and key APIs related to the exception triggering. Then, we perform static analysis to automatically compute such summaries and make a data-tracking of key variables and APIs in the application code to get the ranked buggy candidates. In the scenario of locating Android framework-specific crashing faults, our tool CrashTracker exhibited an overall MRR value of 0.91 and outperforms the state-of-the-art tool Anchor with higher precision. It only provides a compact candidate set and gives user-friendly reports with explainable reasons for each candidate.
@inproceedings{YanWLYZ23,
title = {Locating Framework-specific Crashing Faults with Compact and Explainable Candidate Set},
author = {Jiwei Yan and Miaomiao Wang and Yepang Liu and Jun Yan and Long Zhang},
booktitle = {ICSE},
year = {2023},
doi = {10.1109/icse48619.2023.00026}
}