Out-Of-Place debugging: a debugging architecture to reduce debugging interference

11/05/2018
by   Matteo Marra, et al.
0

Context. Recent studies show that developers spend most of their programming time testing, verifying and debugging software. As applications become more and more complex, developers demand more advanced debugging support to ease the software development process. Inquiry. Since the 70's many debugging solutions were introduced. Amongst them, online debuggers provide a good insight on the conditions that led to a bug, allowing inspection and interaction with the variables of the program. However, most of the online debugging solutions introduce debugging interference to the execution of the program, i.e. pauses, latency, and evaluation of code containing side-effects. Approach. This paper investigates a novel debugging technique called debugging. The goal is to minimize the debugging interference characteristic of online debugging while allowing online remote capabilities. An debugger transfers the program execution and application state from the debugged application to the debugger application, both running in different processes. Knowledge. On the one hand, debugging allows developers to debug applications remotely, overcoming the need of physical access to the machine where the debugged application is running. On the other hand, debugging happens locally on the remote machine avoiding latency. That makes it suitable to be deployed on a distributed system and handle the debugging of several processes running in parallel. Grounding. We implemented a concrete out-of-place debugger for the Pharo Smalltalk programming language. We show that our approach is practical by performing several benchmarks, comparing our approach with a classic remote online debugger. We show that our prototype debugger outperforms by a 1000 times a traditional remote debugger in several scenarios. Moreover, we show that the presence of our debugger does not impact the overall performance of an application. Importance. This work combines remote debugging with the debugging experience of a local online debugger. Out-of-place debugging is the first online debugging technique that can minimize debugging interference while debugging a remote application. Yet, it still keeps the benefits of online debugging ( e.g. step-by-step execution). This makes the technique suitable for modern applications which are increasingly parallel, distributed and reactive to streams of data from various sources like sensors, UI, network, etc.

READ FULL TEXT

page 3

page 29

research
11/03/2022

Out-of-Things Debugging: A Live Debugging Approach for Internet of Things

Context: Internet of Things (IoT) has become an important kind of distri...
research
12/16/2022

NetRPC: Enabling In-Network Computation in Remote Procedure Calls

People have shown that in-network computation (INC) significantly boosts...
research
07/20/2018

SCARR: A Novel Scalable Runtime Remote Attestation

Runtime remote attestation is a technique that allows to validate the co...
research
07/12/2023

Securely extending and running low-code applications with C#

Low-code development platforms provide an accessible infrastructure for ...
research
09/16/2019

ReduKtor: How We Stopped Worrying About Bugs in Kotlin Compiler

Bug localization is well-known to be a difficult problem in software eng...
research
09/07/2019

Elastic Remote Methods

For distributed applications to take full advantage of cloud computing s...
research
12/19/2021

An Architecture for Exploiting Native User-Land Checkpoint-Restart to Improve Fuzzing

Fuzzing is one of the most popular and widely used techniques to find vu...

Please sign up or login with your details

Forgot password? Click here to reset