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/
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...)
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.
https://nostarch.com/building-a-debugger