TY - GEN
T1 - Reverb
T2 - 10th ACM Symposium on Cloud Computing, SoCC 2019
AU - Netravali, Ravi
AU - Mickens, James
N1 - Publisher Copyright:
© 2019 ACM.
PY - 2019/11/20
Y1 - 2019/11/20
N2 - Bugs are common in web pages. Unfortunately, traditional debugging primitives like breakpoints are crude tools for understanding the asynchronous, wide-Area data flows that bind client-side JavaScript code and server-side application logic. In this paper, we describe Reverb, a powerful new debugger that makes data flows explicit and queryable. Reverb provides three novel features. First, Reverb tracks precise value provenance, allowing a developer to quickly identify the reads and writes to JavaScript state that affected a particular variable's value. Second, Reverb enables speculative bug fix analysis. A developer can replay a program to a certain point, change code or data in the program, and then resume the replay; Reverb uses the remaining log of nondeterministic events to influence the post-edit replay, allowing the developer to investigate whether the hypothesized bug fix would have helped the original execution run. Third, Reverb supports wide-Area debugging for applications whose server-side components use event-driven architectures. By tracking the data flows between clients and servers, Reverb enables speculative replaying of the distributed application.
AB - Bugs are common in web pages. Unfortunately, traditional debugging primitives like breakpoints are crude tools for understanding the asynchronous, wide-Area data flows that bind client-side JavaScript code and server-side application logic. In this paper, we describe Reverb, a powerful new debugger that makes data flows explicit and queryable. Reverb provides three novel features. First, Reverb tracks precise value provenance, allowing a developer to quickly identify the reads and writes to JavaScript state that affected a particular variable's value. Second, Reverb enables speculative bug fix analysis. A developer can replay a program to a certain point, change code or data in the program, and then resume the replay; Reverb uses the remaining log of nondeterministic events to influence the post-edit replay, allowing the developer to investigate whether the hypothesized bug fix would have helped the original execution run. Third, Reverb supports wide-Area debugging for applications whose server-side components use event-driven architectures. By tracking the data flows between clients and servers, Reverb enables speculative replaying of the distributed application.
KW - record-And-replay debugging
KW - systems debugging
UR - http://www.scopus.com/inward/record.url?scp=85091785146&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85091785146&partnerID=8YFLogxK
U2 - 10.1145/3357223.3362733
DO - 10.1145/3357223.3362733
M3 - Conference contribution
AN - SCOPUS:85091785146
T3 - SoCC 2019 - Proceedings of the ACM Symposium on Cloud Computing
SP - 428
EP - 440
BT - SoCC 2019 - Proceedings of the ACM Symposium on Cloud Computing
PB - Association for Computing Machinery
Y2 - 20 November 2019 through 23 November 2019
ER -