Today’s complex software systems combine high-level concurrency
models. Each model is used to solve a specific set
of problems. Unfortunately, debuggers support only the lowlevel
notions of threads and shared memory, forcing developers
to reason about these notions instead of the high-level
concurrency models they chose.
This paper proposes a concurrency-agnostic debugger
protocol that decouples the debugger from the concurrency
models employed by the target application. As a result, the
underlying language runtime can define custom breakpoints,
stepping operations, and execution events for each concurrency
model it supports, and a debugger can expose them
without having to be specifically adapted.
We evaluated the generality of the protocol by applying it
to SOMns, a Newspeak implementation, which supports a
diversity of concurrency models including communicating
sequential processes, communicating event loops, threads
and locks, fork/join parallelism, and software transactional
memory. We implemented 21 breakpoints and 20 stepping
operations for these concurrency models. For none of these,
the debugger needed to be changed. Furthermore, we visualize
all concurrent interactions independently of a specific
concurrency model. To show that tooling for a specific concurrency
model is possible, we visualize actor turns and
message sends separately.
Original languageEnglish
Title of host publication13th ACM SIGPLAN International Symposium on Dynamic Languages (DLS 2017)
PublisherACM
Pages3-14
Number of pages12
ISBN (Electronic)978-1-4503-5526-1
StatePublished - 23 Oct 2017
EventDynamic Languages Symposium 2017 - Vancouver, Canada
Duration: 24 Oct 2017 → …

Conference

ConferenceDynamic Languages Symposium 2017
Abbreviated titleDLS'17
CountryCanada
CityVancouver
Period24/10/17 → …

    Research areas

  • Debugging, Tooling, Concurrency, Breakpoints, Stepping, Visualization

ID: 35598238