TY - JOUR
T1 - TARDIS
T2 - Affordable time-travel debugging in managed runtimes
AU - Barr, Earl T.
AU - Marron, Mark
PY - 2014/12/31
Y1 - 2014/12/31
N2 - Developers who set a breakpoint a few statements too late or who are trying to diagnose a subtle bug from a single core dump often wish for a time-traveling debugger. The ability to rewind time to see the exact sequence of statements and program values leading to an error has great intuitive appeal but, due to large time and space overheads, time-traveling debuggers have seen limited adoption. A managed runtime, such as the Java JVM or a JavaScript engine, has already paid much of the cost of providing core features - type safety, memory management, and virtual IO - that can be reused to implement a low overhead time-traveling debugger. We leverage this insight to design and build affordable time-traveling debuggers for managed languages. TARDIS realizes our design: it provides affordable time-travel with an average overhead of only 7% during normal execution, a rate of 0.6 MB/s of history logging, and a worst-case 0.68s time-travel latency on our benchmark applications. TARDIS can also debug optimized code using time-travel to reconstruct state. This capability, coupled with its low overhead, makes TARDIS suitable for use as the default debugger for managed languages, promising to bring time-traveling debugging into the mainstream and transform the practice of debugging.
AB - Developers who set a breakpoint a few statements too late or who are trying to diagnose a subtle bug from a single core dump often wish for a time-traveling debugger. The ability to rewind time to see the exact sequence of statements and program values leading to an error has great intuitive appeal but, due to large time and space overheads, time-traveling debuggers have seen limited adoption. A managed runtime, such as the Java JVM or a JavaScript engine, has already paid much of the cost of providing core features - type safety, memory management, and virtual IO - that can be reused to implement a low overhead time-traveling debugger. We leverage this insight to design and build affordable time-traveling debuggers for managed languages. TARDIS realizes our design: it provides affordable time-travel with an average overhead of only 7% during normal execution, a rate of 0.6 MB/s of history logging, and a worst-case 0.68s time-travel latency on our benchmark applications. TARDIS can also debug optimized code using time-travel to reconstruct state. This capability, coupled with its low overhead, makes TARDIS suitable for use as the default debugger for managed languages, promising to bring time-traveling debugging into the mainstream and transform the practice of debugging.
KW - Managed runtimes
KW - Time-traveling debugger
UR - http://www.scopus.com/inward/record.url?scp=84920812094&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84920812094&partnerID=8YFLogxK
U2 - 10.1145/2660193.2660209
DO - 10.1145/2660193.2660209
M3 - Article
AN - SCOPUS:84920812094
SN - 1523-2867
VL - 49
SP - 67
EP - 82
JO - ACM SIGPLAN Notices
JF - ACM SIGPLAN Notices
IS - 10
ER -