We at VMware had this working and released in 2008. We supported windows and Linux. We even supported things like network applications that had lots of outside state. It was called replay debugging and besides Mozilla, few used it. Sadly it was killed when workstation 8.0 came out.
Time Travel Debugging
21–30 of 52 posts
Re: Time Travel Debugging
#22Reversible debugging been around for six decades (eg EXDAMS on Multics), been generally practical for two or three, been available in gdb for one, and now, finally, here we are. It's taken two bloody human generations to get this close to widely deploying TTD.
So yay. Maybe I can now retire TTD as an example of glacial progress. There's no shortage of others. Sigh.
Re: Time Travel Debugging
#23Earlier quoted context omitted.
Yes: https://www.gnu.org/s/gdb/news/reversible.html This has approximately nothing to do with C++ or even "language communities".
I can't speak for Microsoft itself, but wouldn't the effort to implement a production-ready time-traveling debugging system (as explained here by SteveJS) be at least somewhat influenced by the growing popularity of time-travel debugging in other languages?
Re: Time Travel Debugging
#24TTD is efficient and works to add as little as possible overhead as it captures code execution in trace files. ...and then in the table below the screenshot... Large overhead at record time. May collect more data that is needed. Data files can become large. Based on past experiences with debugging using tracepoints etc., I'm more inclined to believe the latter. Also, as a side-note, the "more modern visuals" of "WinD…
If there is something specific you dislike about the visuals of WinDbg Preview, let us know through the feedback hub or emailing windbgfb@microsoft.com. We realize that folks that have been using WinDbg for 20 years are likely to not be interested in a new UI, but we face 20 years of legacy code every time we want to add a new feature to the UI. As an example, the new WinDbg UI has a javascript window for writing scripts that extend and automate the debugger. It took us approximately 8x less time to implement in WinDbg Preview than what we estimated it would cost in the legacy UI (and a much more junior dev was able to do it as well). We want to innovate without disrupting folks that have effective workflows in WinDbg, so we really want to hear feedback on the new UI. If there are specific things that we can change to make you more efficient in the new UI, please let us know.
Re: Time Travel Debugging
#25For more than two decades now, I've been using the limited availability of reversible debugging as an example of just how dysfunctional software engineering is as a field. The shoemaker's family's tattered feet. Reversible debugging been around for six decades (eg EXDAMS on Multics), been generally practical for two or three, been available in gdb for one, and now, finally, here we are. It's taken two bloody human ge…
Re: Time Travel Debugging
#26TTD is efficient and works to add as little as possible overhead as it captures code execution in trace files. ...and then in the table below the screenshot... Large overhead at record time. May collect more data that is needed. Data files can become large. Based on past experiences with debugging using tracepoints etc., I'm more inclined to believe the latter. Also, as a side-note, the "more modern visuals" of "WinD…
Re: Time Travel Debugging
#27Re: Time Travel Debugging
#28There is also undodb[0] and gdb supports reversing[1]. There is also the rr[2] project from Mozilla. All of those support Linux. I also recently discovered WDD[3] (which is for Windows) as well. [0]: https://undo.io/ [1]: https://www.gnu.org/software/gdb/news/reversible.html [2]: http://rr-project.org/ [3]: https://github.com/ipkn/wdd
Edit: Since I'm still "posting too fast", let me respond here to clarify. Both rr and undodbg support multiple threads, but do not record them simultaneously. They restrict execution to a single core. That's what I mean by recording interactions between threads. For instance, if you have shared memory between processes, that won't work with rr/undodb generally (although I know at least rr can work around this by recording both processes).
I'm not saying one is intrinsically better than the other since there are tradeoffs with both approaches. There is a high constant overhead for recording all cores, but it does have the advantage of scaling well to large numbers of cores.
Re: Time Travel Debugging
#29Re: Time Travel Debugging
#30Earlier quoted context omitted.
I can't speak for Microsoft itself, but wouldn't the effort to implement a production-ready time-traveling debugging system (as explained here by SteveJS) be at least somewhat influenced by the growing popularity of time-travel debugging in other languages?
What other languages got timetravel first? The biggest I've heard is rr from 2014, which is for native code or basically C/C++.