Live data from Hacker News

Reverse Debugging and Other Stories

bogdandeac.com

11–15 of 15 posts

Re: Reverse Debugging and Other Stories

#11

Earlier quoted context omitted.

"Time travel debugging" seems to be taking off as the term - "reverse debugger" was around for a long time but doesn't seem to have taken root. It has fixed the conversation of "We make a reversible debugger", "Ah so you put the bugs in ", though! > rr is amazing but it doesn't work well in cloud environments where it needs you to configure settings in the virtual machine (which you can't). So this limits it to deskt…

I looked at Pernosco but it's obviously not as useful without the recording. Both Undo and Pernosco aren't useful on a Mac. Yes I was talking about replay.io. I agree that these tools have huge potential. I think they have a chance to make a breakthrough. But to cross that chasm into mass market we need something that's easier to use. I had hopes for video bug too. The interface seems promising initially but the deve…

FWIW, Undo works fine in Mac Docker - but that's only useful if you're actually targeting Linux. I presume rr could work there as well, though I've not tried it to see if the performance counters are accessible.

Videobug I had not heard of. Where's the developer experience lacking? I've just had a peek at their video but honestly have little experience of what a Java experience should look like!

Re: Reverse Debugging and Other Stories

#12
post #10

Anybody know any good resources on scripting the debugger? It seems like you should be able to use some kind of concolic execution approach + fuzzing to do something like a binary search between forward and backward breakpoints to automatically find likely bug-containing regions. Or maybe union-find to partition the code into some (minimal) quite-buggy/(maximal) less-buggy sets of code regions. Eg if you could get it…

GDB has some pretty good Python scripting: https://sourceware.org/gdb/onlinedocs/gdb/Python-API.html#Py...

That should get you somewhere useful for time travel systems based on GDB. You can also use Guile if you'd prefer a Lisp - https://sourceware.org/gdb/onlinedocs/gdb/Guile-API.html

Depending on your debugger of choice there are other options - e.g. WinDbg (which has time travel debug) can, I think, be scripted with JS.

Re: Reverse Debugging and Other Stories

#13

Earlier quoted context omitted.

I looked at Pernosco but it's obviously not as useful without the recording. Both Undo and Pernosco aren't useful on a Mac. Yes I was talking about replay.io. I agree that these tools have huge potential. I think they have a chance to make a breakthrough. But to cross that chasm into mass market we need something that's easier to use. I had hopes for video bug too. The interface seems promising initially but the deve…

FWIW, Undo works fine in Mac Docker - but that's only useful if you're actually targeting Linux. I presume rr could work there as well, though I've not tried it to see if the performance counters are accessible. Videobug I had not heard of. Where's the developer experience lacking? I've just had a peek at their video but honestly have little experience of what a Java experience should look like!

I'm guessing you're on an Intel Mac. I'm on M1.

The interface in the plugin of video bug looks like it was designed by a blind person. It's pretty problematic. The steps to follow aren't clear and had I not known how to install an agent I would have been bewildered. I can't imagine someone without deep experience in this field using a tool like that.

Re: Reverse Debugging and Other Stories

#14
Yep, this is why we're building a time-travel debugger for JS at https://replay.io .

The basic idea of Replay: Use our special browser or Node forks to make a recording of your app, load the recording in our debugger, and you can pause at _any_ point in the recording. In fact, you can add print statements to any line of code, and it will show you what it _would_ have printed _every time that line of code ran_!

From there, you can jump to any of those print statement hits, and do typical step debugging and inspection of variables. So, it's the best of both worlds - you can use print statements and step debugging, together, at any point in time in the recording.

We record the OS-level syscalls from the browser, and replay those in the cloud against hundreds of process forks of the exact browser version while you're debugging. When you step backwards, evaluate a print statement that ran many times, or jump to a different pause point, the backend is using those many forked processes to evaluate those results and ship the info to the debugging client.

I can say that we personally use Replay to debug our own dev work on Replay on a daily basis, and it makes a _huge_ difference. I recently used Replay to debug an obscure E2E test failure ( https://twitter.com/acemarke/status/1547682026181996554 ), and a bug with React-Redux v8's `connect` and React's experimental `` ( https://twitter.com/acemarke/status/1559643125865390083 ).

See https://replay.io/record-bugs for the getting started steps to use Replay, and we've got some neat articles about some of the technology at https://docs.replay.io/docs/how-replay-works-2adcccaf8f7743f... .

If you've got any questions, please come by our Discord and ask! https://replay.io/discord

Re: Reverse Debugging and Other Stories

#15

Earlier quoted context omitted.

FWIW, Undo works fine in Mac Docker - but that's only useful if you're actually targeting Linux. I presume rr could work there as well, though I've not tried it to see if the performance counters are accessible. Videobug I had not heard of. Where's the developer experience lacking? I've just had a peek at their video but honestly have little experience of what a Java experience should look like!

I'm guessing you're on an Intel Mac. I'm on M1. The interface in the plugin of video bug looks like it was designed by a blind person. It's pretty problematic. The steps to follow aren't clear and had I not known how to install an agent I would have been bewildered. I can't imagine someone without deep experience in this field using a tool like that.

We have a beta for ARM support which works in docker on M1 mac. Email info@undo.io if interested.
Post reply on HN