Android framework-specific app crashes are hard to debug. Indeed, the callback-based event-driven mechanism of Android challenges crash localization techniques that are developed for traditional Java programs. The key challenge stems from the fact that the buggy code location may not even be listed within the stack trace. For example, our empirical study on 500 framework-specific crashes from an open benchmark has revealed that 37 percent of the crash types are related to bugs that are outside the stack traces. Moreover, Android programs are a mixture of code and extra-code artifacts such as the Manifest file. The fact that any artifact can lead to failures in the app execution creates the need to position the localization target beyond the code realm. In this paper, we propose Anchor, a two-phase suspicious bug location suggestion tool. Anchor specializes in finding crash-inducing bugs outside the stack trace. Anchor is lightweight and source code independent since it only requires the crash message and the apk file to locate the fault. Experimental results, collected via cross-validation and in-the-wild dataset evaluation, show that Anchor is effective in locating Android framework-specific crashing faults.
翻译:Android 特定框架的崩溃很难调试 。 事实上, 以回调为基础的Android 挑战事件驱动机制会崩溃为传统 Java 程序开发的本地化技术。 关键的挑战在于, 错误代码位置可能甚至无法在堆叠追踪中列出。 例如, 我们关于500个框架特定崩溃的实验性研究显示, 37%的崩溃类型与堆叠追踪之外的错误有关。 此外, Android 程序是代码和额外代码的人工制品的混合体, 比如 宣言文件 。 任何人工制品都可能导致程序执行中的失败, 使得有必要将本地化目标置于代码范围之外 。 在本文中, 我们提议安歇尔, 一个两阶段的可疑错误位置建议工具 。 固定点在查找堆叠跟踪之外的崩溃诱导错误。 Anchor 是轻度和源代码独立的, 因为它只需要崩溃信息以及鼠标文件来定位错误 。 实验结果, 是通过交叉校验和错误数据设置评估收集的。