Framework-aware debugging with stack tailoring
Document type :
Communication dans un congrès avec actes
DOI :
Title :
Framework-aware debugging with stack tailoring
Author(s) :
Marra, Matteo [Auteur]
Vrije Universiteit Brussel [Bruxelles] [VUB]
Polito, Guillermo [Auteur]
Centre de Recherche en Informatique, Signal et Automatique de Lille - UMR 9189 [CRIStAL]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Gonzalez Boix, Elisa [Auteur]
Vrije Universiteit Brussel [Bruxelles] [VUB]
Vrije Universiteit Brussel [Bruxelles] [VUB]
Polito, Guillermo [Auteur]

Centre de Recherche en Informatique, Signal et Automatique de Lille - UMR 9189 [CRIStAL]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Gonzalez Boix, Elisa [Auteur]
Vrije Universiteit Brussel [Bruxelles] [VUB]
Conference title :
SPLASH '20: Conference on Systems, Programming, Languages, and Applications, Software for Humanity
City :
Virtual USA
Country :
Etats-Unis d'Amérique
Start date of the conference :
2020-11-17
Publisher :
ACM
Publication date :
2020-11-15
English keyword(s) :
stack manipulation
domain specific debugging
debugging support
domain specific debugging
debugging support
HAL domain(s) :
Informatique [cs]/Langage de programmation [cs.PL]
English abstract : [en]
Debugging applications that execute within a framework is not always easy: the call-stack offered to developers is often a mix-up of stack frames that belong to different frameworks, introducing an unnecessary noise that ...
Show more >Debugging applications that execute within a framework is not always easy: the call-stack offered to developers is often a mix-up of stack frames that belong to different frameworks, introducing an unnecessary noise that prevents developers from focusing on the debugging task. Moreover, relevant application code is not always available in the call-stack because it may have already returned, or is available in another thread. In such cases, manually gathering all relevant information from these different sources is not only cumbersome but also costly. In this paper we introduce Sarto, a call-stack instrumentation layer that allows developers to tailor the stack to make debugging framework-aware. The goal is to improve the quality and amount information present in the call-stack to reduce debugging time without impacting the execution time. Sarto proposes a set of six stack operations that combined hide irrelevant information, introduce missing information, and relate dispersed debugging sources before this is fed to the debugger. We validate Sarto by applying it to four application cases using inherently different frameworks: unit testing, web server, remote promises and big data processing. We showcase our experiences in using Sarto in the different frameworks, and perform some performance benchmarks to demonstrate that Sarto does not generate noticeable overhead when instrumenting a call-stack. We also show that our solution reduces by half the amount of data stored to debug similar exceptions happening in a parallel setup.Show less >
Show more >Debugging applications that execute within a framework is not always easy: the call-stack offered to developers is often a mix-up of stack frames that belong to different frameworks, introducing an unnecessary noise that prevents developers from focusing on the debugging task. Moreover, relevant application code is not always available in the call-stack because it may have already returned, or is available in another thread. In such cases, manually gathering all relevant information from these different sources is not only cumbersome but also costly. In this paper we introduce Sarto, a call-stack instrumentation layer that allows developers to tailor the stack to make debugging framework-aware. The goal is to improve the quality and amount information present in the call-stack to reduce debugging time without impacting the execution time. Sarto proposes a set of six stack operations that combined hide irrelevant information, introduce missing information, and relate dispersed debugging sources before this is fed to the debugger. We validate Sarto by applying it to four application cases using inherently different frameworks: unit testing, web server, remote promises and big data processing. We showcase our experiences in using Sarto in the different frameworks, and perform some performance benchmarks to demonstrate that Sarto does not generate noticeable overhead when instrumenting a call-stack. We also show that our solution reduces by half the amount of data stored to debug similar exceptions happening in a parallel setup.Show less >
Language :
Anglais
Peer reviewed article :
Oui
Audience :
Internationale
Popular science :
Non
Collections :
Source :
Files
- https://hal.inria.fr/hal-03043779v2/document
- Open access
- Access the document
- https://hal.inria.fr/hal-03043779v2/document
- Open access
- Access the document
- https://hal.inria.fr/hal-03043779v2/document
- Open access
- Access the document
- document
- Open access
- Access the document
- Marr20b-DSL-Stack.pdf
- Open access
- Access the document