Understanding Differences among Executions with Variational Traces

by   Jens Meinicke, et al.

One of the main challenges of debugging is to understand why the program fails for certain inputs but succeeds for others. This becomes especially difficult if the fault is caused by an interaction of multiple inputs. To debug such interaction faults, it is necessary to understand the individual effect of the input, how these inputs interact and how these interactions cause the fault. The differences between two execution traces can explain why one input behaves differently than the other. We propose to compare execution traces of all input options to derive explanations of the behavior of all options and interactions among them. To make the relevant information stand out, we represent them as variational traces that concisely represents control-flow and data-flow differences among multiple concrete traces. While variational traces can be obtained from brute-force execution of all relevant inputs, we use variational execution to scale the generation of variational traces to the exponential space of possible inputs. We further provide an Eclipse plugin Varviz that enables users to use variational traces for debugging and navigation. In a user study, we show that users of variational traces are more than twice as fast to finish debugging tasks than users of the standard Eclipse debugger. We further show that variational traces can be scaled to programs with many options.


page 2

page 9


Execution traces and reduction sequences

In this note, we defend that the notion of algorithm as a set of executi...

Traveler: Navigating Task Parallel Traces for Performance Analysis

Understanding the behavior of software in execution is a key step in ide...

Improving Grey-Box Fuzzing by Modeling Program Behavior

Grey-box fuzzers such as American Fuzzy Lop (AFL) are popular tools for ...

Faster Variational Execution with Transparent Bytecode Transformation

Variational execution is a novel dynamic analysis technique for explorin...

Modeling Hierarchical Usage Context for Software Exceptions based on Interaction Data

Traces of user interactions with a software system, captured in producti...

Explaining Hyperproperty Violations

Hyperproperties relate multiple computation traces to each other. Model ...

Design and Evaluation of Scalable Representations of Communication in Gantt Charts for Large-scale Execution Traces

Gantt charts are frequently used to explore execution traces of large-sc...

Please sign up or login with your details

Forgot password? Click here to reset