Writing a Debugger from Scratch

Posted by ibobev 15 hours ago

Counter42Comment7OpenOriginal

Comments

Comment by Cieric 13 hours ago

I feel like it's good to note since I missed it. This post is from Feb 13, 2023. He has up to 8 posts on this at this point which don't appear to be linked to from this post. I think linking to all of them would be a bit much, but they're all currently listed on his main page [1].

[1] https://www.timdbg.com/

Comment by scott01 13 hours ago

There’s a relevant book from No Starch, highly recommend. The author also has a series of blog posts on the topic.

https://nostarch.com/building-a-debugger

Comment by whartung 12 hours ago

A favorite developing a debugger story was from a friend of mine.

They were working on a debugger for OS/2, which was quite notable at the time for being multitasking.

And at one point they got to enough of a base feature set that they could use the debugger on itself. Debugging the debugger.

While debugging the debugger, they would inevitably encounter other bugs in the debugging debugger.

So, with OS/2, they had a bit of an epiphany when they were able to debug the debugger debugging the debugger.

Comment by sroussey 12 hours ago

It took us a bit of work back in the day to use Firebug to debug Firebug. But pretty easy these days to have Chrome dev tools to debug itself.

Comment by stevekemp 8 hours ago

And I used to use the Numega SoftIce debugger to debug the anti-copying protection of itself, back in the day.

(Allegedly. Shout out to +fravia, RIP.)

Comment by chromadon 7 hours ago

Numega SoftIce! Now thats a name I've not heard in a a long time. I think I had 2 Windows98 machines and a RS232 cable for connecting them.

Comment by zzril 11 hours ago

For linux, there's this excellent series of articles by Eli Bendersky:

https://eli.thegreenplace.net/2011/01/23/how-debuggers-work-...

https://eli.thegreenplace.net/2011/01/27/how-debuggers-work-...

https://eli.thegreenplace.net/2011/02/07/how-debuggers-work-...

(Unfortunately, the articles don't include links to their respective follow-ups, but I'm pretty sure it ends after part 3...)