Posez n’importe quelle question sur les cours, conférences, exercices, recherches, actualités, etc. de l’EPFL ou essayez les exemples de questions ci-dessous.
AVERTISSEMENT : Le chatbot Graph n'est pas programmé pour fournir des réponses explicites ou catégoriques à vos questions. Il transforme plutôt vos questions en demandes API qui sont distribuées aux différents services informatiques officiellement administrés par l'EPFL. Son but est uniquement de collecter et de recommander des références pertinentes à des contenus que vous pouvez explorer pour vous aider à répondre à vos questions.
Traditional step-by-step debuggers are highly effective tools for isolating and resolving localized bugs, but they often require an initial hypothesis about where and when a bug occurs. Setting effective breakpoints or deciding what to log becomes costly when a bug depends on long executions, rare inputs, or multiple loop iterations. A small number of prior projects suggest a different workflow to address these limitations: record what happens during a program’s execution and let developers navigate the resulting trace afterwards. Tools that follow this approach are called tracing debuggers.
This thesis presents a concrete evolution of PrintWizard, a Java tracing debugger prototype initially developed by Erwan Serandour for his Master's thesis and later extended by Bastien Jolidon and Kelvin Kappeler during their Master's project. This thesis improves PrintWizard along two main lines. The first contribution is a redesigned tracing backend that produces a richer and more explicit execution model. The backend combines (i) static extraction of source structure (methods, statements, and expressions) and (ii) compile-time instrumentation via a Javac plugin that injects semantics-preserving logging hooks. The resulting trace is written as a small set of JSON files that together capture control flow, expression results, method-call boundaries, and the evolution of mutable objects.
The second contribution aligns the frontend with this new trace model to improve usability. The interface load traces faster, and support more effective navigation through features such as improved breadcrumbs and enhanced inspectors.
These changes move PrintWizard from a prototype toward a practical debugging workflow in which developers observe an unexpected state and then browse the execution trace directly. The interface shows the trace itself, and scrolling up or down simply reveals earlier or later events in time. Developers no longer need to place breakpoints in advance or add extensive manual logging.