Microprocessor debugging techniques and their application in debugger design
Software—Practice & Experience
Debugging Parallel Programs with Instant Replay
IEEE Transactions on Computers
A software instruction counter
ASPLOS III Proceedings of the third international conference on Architectural support for programming languages and operating systems
Debugging distributed C programs by real time reply
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
ACM Computing Surveys (CSUR)
Deterministic replay of Java multithreaded applications
SPDT '98 Proceedings of the SIGMETRICS symposium on Parallel and distributed tools
ISCA '02 Proceedings of the 29th annual international symposium on Computer architecture
A survey of rollback-recovery protocols in message-passing systems
ACM Computing Surveys (CSUR)
Some requirements for architectural support of software debugging
ASPLOS I Proceedings of the first international symposium on Architectural support for programming languages and operating systems
A "flight data recorder" for enabling full-system multiprocessor deterministic replay
Proceedings of the 30th annual international symposium on Computer architecture
BugNet: Continuously Recording Program Execution for Deterministic Replay Debugging
Proceedings of the 32nd annual international symposium on Computer Architecture
Flashback: a lightweight extension for rollback and deterministic replay for software debugging
ATEC '04 Proceedings of the annual conference on USENIX Annual Technical Conference
Tracing and recording interrupts in embedded software
Journal of Systems Architecture: the EUROMICRO Journal
Hi-index | 0.01 |
Recent embedded real-time software tends to be multithreaded and constrained by stringent timing requirements, thus often leading to serious faults depending on the precise timing of thread executions and event occurrences. A promising approach to debugging such complicated software is to log appropriate events during runtime and replay the same software execution based on them. This would allow one to effectively reproduce and track down the sources of faults. Unfortunately, previous software-based replayers have not paid much attention to the precise timing of software execution, but largely focused on the relative order of software events. Although some hardware-based replayers can provide such precise timing, they generally require a significant cost and are not available in usual development environments. In this paper, we present a software-based replayer, called RT-Replayer. RT-Replayer is based on two simple but effective software techniques, called virtual timestamps and instruction hooking, which enable faithful reproduction of the original software execution at instruction level accuracy.