Expositor: Scriptable time-travel debugging with first-class traces

Expositor: Scriptable time-travel debugging with first-class traces
复制标题

Expositor:具有一流跟踪的可编写脚本的时间旅行调试

DOI:
--
复制
发表时间:
2013
期刊:
International Conference on Software Engineering
影响因子:
--
通讯作者:
M. Hicks
M. Hicks
中科院分区:
--
文献类型:
--
作者:
Yit Phang Khoo;J. Foster;M. Hicks

文献摘要

被引文献

相似文献

我们提出Expositor,一个新的调试环境,结合了脚本和时间旅行调试,让程序员自动化复杂的调试任务。Expositor提供的基本抽象是执行跟踪,它是程序状态快照的时间索引序列。程序员可以像处理简单的列表一样处理跟踪,比如map和filter。在引擎盖下,Expositor有效地将跟踪实现为惰性的稀疏间隔树,其内容按需具体化。Expositor还提供了一种新颖的数据结构,即编辑哈希数组映射trie,这是集合、映射、多重集合和多重映射的惰性实现,使程序员能够最大限度地提高调试脚本的效率。我们已经使用Expositor调试了一个堆栈溢出,并解决了Firefox中一个微妙的数据竞争。我们相信Expositor代表了在改进诊断复杂、难以理解的bug的技术方面迈出的重要一步。
We present Expositor, a new debugging environment that combines scripting and time-travel debugging to allow programmers to automate complex debugging tasks. The fundamental abstraction provided by Expositor is the execution trace, which is a time-indexed sequence of program state snapshots. Programmers can manipulate traces as if they were simple lists with operations such as map and filter. Under the hood, Expositor efficiently implements traces as lazy, sparse interval trees whose contents are materialized on demand. Expositor also provides a novel data structure, the edit hash array mapped trie, which is a lazy implementation of sets, maps, multisets, and multimaps that enables programmers to maximize the efficiency of their debugging scripts. We have used Expositor to debug a stack overflow and to unravel a subtle data race in Firefox. We believe that Expositor represents an important step forward in improving the technology for diagnosing complex, hard-to-understand bugs.