Abstract

Multi-threaded programming is part of mainstream software development. It adds several issues not present on serial applications. Among the issues an important one is data races, i.e. the unsynchronized access of data by multiple threads. They are particularly hard to debug since they typically occur sporadically and often invisibly corrupt the internal state. Generally, the tool used to identify those kinds of issues is a data race analyzer. Due to the subtlety of data race bugs, the user at this point would already have tried to understand the problem using an application debugger. Debuggers offer a variety of features to analyze and modify the execution state of programs. Such features are typically not offered by data race analyzers. Integrating a data race analyzer into a debugger would improve the user workflow. This is usually prohibited by the huge performance overhead of a whole-program data race analysis. We propose in this work a method to reduce the overhead by allowing the user to define the scope of the analysis. A sufficiently narrow scope reduces the performance overhead to less than 5 $$\times $$ × , thus allowing its integration into a debugger. Defining the analysis scope fits naturally into the debugger workflow of focusing on one problem at a time. The work here presented has been implemented in a commercial debugger product.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call