A brief history of debugging, why debugging large systems is different, and how the “multiverse debugger” built by Antithesis attempts to take on this challenging problem space
The section on time-travel debugging seemed a bit odd. It's a feature that comes standard with the (free) Windows SDK, and works in all languages (not just functional) on real applications (not sandboxed). This is a debugging feature that has been available for a long time in a lot of different tools, which the article didn't seem to acknowledge. Maybe Antithesis is better in some other ways, but, working outside a sandbox and not being restricted to functional languages are not differentiating factors compared to existing debugging tools.
I agree with Casey here, and just to add something for the non-Windows folks, gdb offers a form of TTD as well (see https://youtu.be/dtPlx-Tn3mM?si=cGtzdFWhKI6qfGiz&t=4384 for an intro). My understanding is that the Windows SDK as well as gdb keep track of changes in the register and memory state of the debugee process, but not in other side effects like file and database changes, while Anthesis tries to cover those as well.
FYI - Lisp and Prolog had these debugging technologies earlier - substantially in some cases - than the list here. Some early (~1969?) Fortran work had reversible debugging. Pretty impressive! Prolog research around 92 in particular had some very advanced capabilities around dynamic debugging and time travel that still, I think, isn't matched by the industry. That line of research tailed off after the dominance of Windows, Unix, and the AI Winter began. I can find my Masters work for citations if anyone has curiosity. :)
The section on time-travel debugging seemed a bit odd. It's a feature that comes standard with the (free) Windows SDK, and works in all languages (not just functional) on real applications (not sandboxed). This is a debugging feature that has been available for a long time in a lot of different tools, which the article didn't seem to acknowledge. Maybe Antithesis is better in some other ways, but, working outside a sandbox and not being restricted to functional languages are not differentiating factors compared to existing debugging tools.
I agree with Casey here, and just to add something for the non-Windows folks, gdb offers a form of TTD as well (see https://youtu.be/dtPlx-Tn3mM?si=cGtzdFWhKI6qfGiz&t=4384 for an intro). My understanding is that the Windows SDK as well as gdb keep track of changes in the register and memory state of the debugee process, but not in other side effects like file and database changes, while Anthesis tries to cover those as well.
FYI - Lisp and Prolog had these debugging technologies earlier - substantially in some cases - than the list here. Some early (~1969?) Fortran work had reversible debugging. Pretty impressive! Prolog research around 92 in particular had some very advanced capabilities around dynamic debugging and time travel that still, I think, isn't matched by the industry. That line of research tailed off after the dominance of Windows, Unix, and the AI Winter began. I can find my Masters work for citations if anyone has curiosity. :)