Conference paper

Querypoint : Moving Backwards on Wrong Values in the Buggy Execution

As developers debug, they often have to seek the origins of wrong values they see in their debugger. This search must be performed backwards in time since the code causing the wrong value is executed before the wrong value appears. Therefore, locating the origin of wrong values with breakpoint- or log- based debuggers demands persistence and significant experience. \textit{Querypoint}, is a Firefox plugin that enhances the popular Firebug JavaScript debugger with a new, practical feature called \textit{lastChange}. \textit{lastChange} automatically locates the last point at which a variable or an object property has been changed. Starting from a program suspended on a breakpoint, the \textit{lastChange} algorithm 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, it shows the call stack and program state at the last change point. To evaluate the usability and effectiveness of \textit{Querypoint} we studied four experienced JavaScript developers applying the tool to two test cases.

Related material