Implementation of Live Reverse Debugging in LLDB
Anthony Savidis, Vangelis Tsiatsianas

TL;DR
This paper presents the development of the first live reverse debugger integrated with LLDB, enabling developers to rewind and inspect program execution in real-time, overcoming technical challenges and performance issues of existing tools.
Contribution
The paper introduces a novel live reverse debugging implementation within LLDB, addressing technical complexity and performance overhead issues of prior reverse debuggers.
Findings
First live reverse debugger implemented in LLDB
Demonstrates feasibility of real-time rewind in debugging sessions
Addresses technical challenges of reverse debugging integration
Abstract
Debugging is an essential process with a large share of the development effort, being a relentless quest for offensive code through tracing, inspection and iterative running sessions. Probably every developer has been in a situation with a clear wish to rewind time just for a while, only to retry some actions alternatively, instead of restarting the entire session. Well, the genie to fulfill such a wish is known as a reverse debugger. Their inherent technical complexity makes them very hard to implement, while the imposed execution overhead turns them to less preferable for adoption. There are only a few available, most being off-line tools, working on recorded, previously run, sessions. We consider live reverse debuggers both challenging and promising, since they can fit into existing forward debuggers, and we developed the first live reverse debugger on top of LLDB, discussing in…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Advanced Malware Detection Techniques · Security and Verification in Computing
