Deterministic Replay as a Platform for Understanding Dynamic Behaviors in Web Programs

116
Опубликовано 22 июня 2016, 1:01
The web is the most successful open application platform, where anyone can inspect a live application to see how it works. Despite readily inspectable source code and runtime state, web applications are still challenging to debug. In particular, dynamic behaviors-user interactions, animations, and asynchronous work-cannot be understood solely by looking at static source code. Several barriers stand in the way of understanding dynamic behaviors: reproducing nondeterministic behavior is often impossible; finding and comparing a behavior's runtime states is time-consuming; and the code that implements a behavior is scattered across multiple DOM, CSS, and JavaScript files. In this talk, I will describe how pervasive, transparent, and fast deterministic record/replay enables new tools for understanding dynamic behaviors. First, I will introduce Dolos: a browser-integrated replay infrastructure that can efficiently and precisely capture and reproduce dynamic behaviors on web pages. Then, I will describe several tools built on top of Dolos that support different program understanding tasks. Timelapse is an interface for visualizing and navigating a captured execution via its user inputs and tasks. Probes are a new feature for retroactively logging runtime states and going back in time to statements that produce outputs. Lastly, Scry is a tool that enables a developer to find the code that implements a behavior by working backward from visual output, to CSS and DOM state, and the JavaScript code responsible for each state. I will discuss the challenges involved in designing, building, and evaluating these tools, and future opportunities for developer tools and deterministic replay.
автотехномузыкадетское