Really powerful tooling — I haven’t kept up with it for a while, but last I checked it didn’t work on aarch64/arm64 because of a lack of certain performance counters only available on x86 hardware. The lack of support for other languages (e.g. Go) is also a shame. This has unfortunately rendered it unviable for my day job!
If you’re working in a stack where it’s supported, it’s really quite special.
That said, it would be very neat to have a more complete standard debugging interface across ahead-of-time-compiled code, interpreters, and JITs.
And it does have some aarch64 support by now, though it'll still require a suitable CPU with necessary perf counters.
It’s based on rr ( same author ) but vastly better
* rr record
* rr replay until crash or exception (set up catchpoint for that)
* set up hardware watchpoint for borked data that caused the issue
* work backwards in the data flow through watchpoints and reverse-continue
I would say this fundamentally changed how I approach debugging.It is indeed marvelous for many situations; except for concurrency bugs ;)
It can find higher level concurrency bugs though, and has a "chaos mode" that schedules threads in an unfair random manner.
https://robert.ocallahan.org/2016/02/introducing-rr-chaos-mo...