Abstract
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.
Author supplied keywords
Cite
CITATION STYLE
Netravali, R., & Mickens, J. (2019). Reverb: Speculative Debugging for Web Applications. In SoCC 2019 - Proceedings of the ACM Symposium on Cloud Computing (pp. 428–440). Association for Computing Machinery. https://doi.org/10.1145/3357223.3362733
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.