Repository navigation
Rewind64 v0.2.12 (Linux x86-64 experimental)
Pre-releaseRewind64 v0.2.12 — experimental Linux x86-64 prerelease
Explore execution. Trace every instruction. Understand the past.
This experimental update introduces a continue-to-next-signal interactive command and verifies a real series of handled signal-delivery stops. The debugger remains a forward-only, single self-launched Linux x86-64 target debugger.
New: until-signal / u
At an interactive prompt:
rewind64> until-signal
Interactive signal stop: signal 10 pending; choose step, until-signal, continue or quit.
rewind64> signals
Signal history [0]: signal=10 si_code=0 step=0
rewind64> u
Interactive signal stop: signal 10 pending; choose step, until-signal, continue or quit.
rewind64> signals
Signal history [0]: signal=10 si_code=0 step=0
Signal history [1]: signal=10 si_code=0 step=0
The example uses a target with a real SIGUSR1 handler; actual signal codes and counts depend on the program. until-signal performs PTRACE_CONT and returns to the command prompt at the next validated application signal-delivery stop, with that new signal not yet forwarded.
- At a pending signal stop: another
u,steporcontinueforwards the pending signal exactly once on a successful ptrace resume. - At a new validated signal stop: the session records the stop in the bounded eight-entry
signalsring and returns to the interactive prompt.signalsandeventsremain read-only. - If the tracee exits first: the target's actual status is returned; no synthetic signal stop is invented.
- Across exec events: ordinary ptrace exec events are followed and don't count as application signal stops.
- Existing ordinary
continuebehavior is unchanged: it runs onward and automatically forwards signals. - The exact commands
until-signal/uare accepted even if the final input line has no newline. Extra arguments are rejected.
Repeated handled-signal verification
A new native NASM Linux x86-64 fixture sends itself ten SIGUSR1 signals sequentially and verifies that a real installed handler ran ten times before exiting successfully. With repeated u requests, the debugger must:
- Stop at each of the ten signal-delivery events, retaining at most the latest eight records in chronological order.
- Distinguish 10 observed vs 9 forwarded signal events while paused at the tenth stop, then report 10 forwarded after the final resume.
- Leave the stopped target unchanged during
signals,events,historyandstatusinspections.
The full Python-free Bash/native NASM suite has 204 integration tests, exercised on Ubuntu 22.04 and Ubuntu 24.04. The prerelease publishing workflow reruns make clean && make test before packaging the native executable archive and SHA256SUMS.txt.
Usage
./rewind64 run --interactive /path/to/your/authorized/program
./rewind64 run --interactive --changes-only /path/to/your/authorized/programInteractive commands include step [1..16]/s, until-signal/u, history [1..16]/h, events/e, signals/g, regs/r, status/i, code/x, bytes [1..8]/b, stack/k, mem 0xHEX [1..4]/m, continue/c, help, and quit/q.
Scope and safety
Debug only programs you own or have permission to inspect. Linux ptrace restrictions apply; Rewind64 is not a security sandbox and can reveal sensitive process state. No multi-thread/process following, Windows/macOS backend, attach, breakpoints, disassembly, persistent execution traces, historic memory/register restoration, deterministic replay or reverse stepping is implemented. This is an experimental pre-release, not stable.
License: Boost Software License 1.0. Repository: https://github.com/sanskarIN/Rewind64