Though life is hard, I want it to be boiling.
REPT: Reverse Debugging of Failures in Deployed Software
REPT is an intergration in WinDbg. It is a practical system that enables reverse debugging of software failures in deployed systems with low runtime overhead. REPT only relys on the data in a memory dump, and analysis at the binary level instead of source code. REPT uses hardware support to log the control flow and timing information.
DoublePlay: Parallelizing Sequential Logging and Replay
DoublePlay finds a way to record and replay instructions running on multiple cores. It timeslices multiple threads on a single processor, then runs multiple time intervals (epochs) of the program concurrently on separate processors.
Ninja: Towards Transparent Tracing and Debugging on ARM
Ninja makes use of Arm hardware feature like TrustZone, PMU, and ETM to build a transparent tracing and debugging tool.
Inline Assembly Language in C
Writing assembly code is hard and boring! However, if you want to set regisiters, read memories, sometimes you must do the "dirty work".