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

Abstract : 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 have been introduced. Amongst them, online debuggers provide 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 out-of-place debugging. The goal is to minimize the debugging interference characteristic of online debugging while allowing online remote capabilities. An out-of-place debugger transfers the program execution and application state from the debugged application to the debugger application, each running in a different process. Knowledge On the one hand, out-of-place 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 running several benchmarks, comparing our approach with a classic remote online debugger. We show that our prototype debugger outperforms a traditional remote debugger by 1000 times 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 debug-ger. 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.
Type de document :
Article dans une revue
The Art, Science, and Engineering of Programming, aosa, Inc., 2018, 3 (2), pp.1-29. 〈10.22152/programming-journal.org/2019/3/3〉
Liste complète des métadonnées

https://hal.inria.fr/hal-01952790
Contributeur : Lse Lse <>
Soumis le : mercredi 12 décembre 2018 - 13:52:15
Dernière modification le : vendredi 22 mars 2019 - 01:37:14
Document(s) archivé(s) le : mercredi 13 mars 2019 - 13:55:01

Fichier

1811.02034v1.pdf
Fichiers produits par l'(les) auteur(s)

Identifiants

Collections

Citation

Matteo Marra, Guillermo Polito, Elisa Gonzalez Boix. Out-Of-Place debugging: a debugging architecture to reduce debugging interference. The Art, Science, and Engineering of Programming, aosa, Inc., 2018, 3 (2), pp.1-29. 〈10.22152/programming-journal.org/2019/3/3〉. 〈hal-01952790〉

Partager

Métriques

Consultations de la notice

57

Téléchargements de fichiers

94