Fig. 1. A programmer investigates a bug in their code. One common practice, shown in the top row, is to instrument the program manually to collect suspicious variables (in this case x), and print out their values. Manual instrumentation, however, is itself error-prone and leaves the programmer responsible for sifting through values. Another common practice, shown in the second row, is to use a debugger to stop the execution of the program automatically and view each assignment of x individually. However, breakpoint-debugging tends to provide only a narrow, one-at-a-time view of the values. Anteater, shown in the bottom row, automatically instruments the code to track variables along with the context of their execution structure. It presents the programmer with interactive visualizations that give a global view of values, which allow for easy detection of erroneous values as well as interactions to narrow down the visualizations to inspect specific values. We provide a demo of Anteater in action as supplemental material.