Publication

Debugging by lastChange

Claude Petitpierre, Salman Mirghasemi
2011
Report or working paper
Abstract

Developers often seek the origins of wrong values they see in their debugger. Their search must be backwards in time: the code causing the wrong value executed before the wrong value appeared. Searching with breakpoint- or log- based debuggers demands persistence and significant experience with the application being debugged. We introduce a new, practical feature for debuggers called \textit{lastChange}, which automatically locates the last point that a variable or an object property has been changed. Starting from a program halted on a breakpoint, the \textit{lastChange} solution applies queries to the live program during re-execution, recording the call stack and limited program state each time the property value changes. When the program halts again on the breakpoint, the recorded information can be shown to the developer. As a proof of this concept, we developed \textit{Querypoint}, a prototype which enhances the popular Firebug JavaScript debugger with the \textit{lastChange} feature and studied users applying the prototype to some test cases. The approach used in implementing \textit{lastChange} combines the flexibility of breakpoint debugging with the expressive power of log-based query debugging. Contrary to other replay-based approaches, which require exactly the same re-executions (deterministic executions), our new approach only requires \textit{bug reproducibility}, meaning a test case is available which reproduces the bug and a way to halt execution reliably after the reproduction.

About this result
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.

Graph Chatbot

Chat with Graph Search

Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.

DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.