Skip to content(if available)orjump to list(if available)

UndoDB – The interactive time travel debugger for Linux C/C++ for debugging

ognarb

What's the difference with RR?

roca

[rr developer here]

Undo has cool features like Live Recording that we don't have in rr. They don't need access to the hardware PMU which is a big advantage in some situations. They can handle accesses to shared memory in cases where rr can't. https://undo.io/resources/undo-vs-rr/ is a good resource.

null

[deleted]

leni536

AFAIK it records multithreaded applications on multiple threads and CPU, rr records them on a single OS thread, AFAIK. Not sure about replay. Never used undo though, so not sure how much better it is.

dzaima

rr does support multithreaded and multi-process applications, via, like Undo[1], allowing only a single thread to run at a time. (edit note - that's only about multithreading; Undo might have parallel multi-process recording)

[1]: https://undo.io/resources/undo-performance-benchmarks/ - "Undo serializes their execution"

leni536

I stand corrected, not sure where I heard this then.

kristopolous

This one has a flashy website and a marketing department

schaefer

Let me save you a click:

Pricing & Licensing

A UDB floating license costs $7,900 per year.

dima55

rr is awesome and is free and open and all that. How much better could this possibly be?

AlotOfReading

They have a comparison page: https://undo.io/resources/undo-vs-rr/

I was in talks with them recently because I kept running into limitations with rr. The main advantages for my use case were that undo doesn't have the same dependency on hardware timers, which means the ARM support is much better, you can run it in a VM (e.g. a cloud machine) and you can do replays on different systems.

dzaima

A couple minor notes:

- If your program is very light on syscalls (i.e. basically entirely in-memory computation), rr can go to a basically 1.0x slowdown. In particular this means you can run benchmarks in it at full capacity, provided that I/O is outside of the repeated part (e.g. if sometimes the bench is noticably slower, you can replay and see if some important loads/stores crossed a cacheline/page). You can even "perf record" / "perf stat" a replay if you want to! (none of this is too useful, but it's fun! Gathering repeated stats over the same execution for more resolution might be useful with proper tooling though)

- rr does have an in-memory buffer of recording data.

- rr recordings should be portable within the architecture, as long as the replay hardware has the extensions the recorder did (or if replayer-unsupported features are disabled at record-time).

Veserv

Well, if you have a Google L5 making ~365k [1] then it would need to make them ~2.2% more productive overall to be worth it when just considering direct pay. If we consider a Google L3 at ~187k then it would need to make them ~4.2% more productive overall.

This, of course, ignores employee benefits and overhead which usually amount to ~100% extra costs over direct pay. So that is now ~1.1% and ~2.1%, respectively.

And that ignores the fact that you need to pay people less than they produce to be profitable which probably drops us down to ~0.5% and ~1.0%, respectively.

[1] https://www.levels.fyi/companies/google/salaries/software-en...

edit: Incorrectly linked to product designer instead of software engineer levels.

dima55

OK... Most of us don't know what a "google l5" is, so I guess we can safely ignore this. Heh.

esafak

No-one is going to spend $8K out of pocket to A/B test this on themselves. Of all the things you could be doing to improve your productivity, this is some high hanging fruit.