[HN Gopher] Demystifying Debuggers
       ___________________________________________________________________
        
       Demystifying Debuggers
        
       Author : ibobev
       Score  : 156 points
       Date   : 2025-06-08 07:18 UTC (3 days ago)
        
 (HTM) web link (www.rfleury.com)
 (TXT) w3m dump (www.rfleury.com)
        
       | captn3m0 wrote:
       | Related: https://nostarch.com/building-a-debugger is close to
       | publication (currently in Early Access) and covers building a
       | debugger for x64.
        
         | fileeditview wrote:
         | I have bought the book months back and I think I recently
         | received an email that the final version was released.
         | 
         | Anyways I can recommend it even though I am not finished with
         | it yet.
        
           | remexre wrote:
           | Could you check what version of DWARF it covers?
        
             | ddelnano wrote:
             | It covers version 4, but it explains differences with v5 as
             | they come up.
        
               | remexre wrote:
               | Okay, thanks!
        
               | ddelnano wrote:
               | Even if you have experience with DWARF, I think you will
               | learn something new from the book.
               | 
               | I work on CNCF Pixie, which uses DWARF for eBPF uprobes
               | and dynamic instrumentation. While I understood how our
               | project uses DWARF, the book made many details much
               | clearer for me.
        
       | thasso wrote:
       | If you are interested in debuggers, there was a post series by Sy
       | Brand a few years back:
       | 
       | https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/
       | 
       | Eli Bendersky also wrote about debuggers (I think his post is a
       | great place to start):
       | 
       | https://eli.thegreenplace.net/2011/01/23/how-debuggers-work-...
       | 
       | I was fascinated with debuggers a while back exactly because they
       | were so mysterious to me. I then wrote a ptrace debugger myself
       | [1]. It features pretty simple implementations of the most common
       | stuff you would expect in a debugger. Though I made the grave
       | mistake of formatting all the code in GNU style.
       | 
       | [1]: https://github.com/thass0/spray/tree/main/src
        
         | Rochus wrote:
         | And there is a brand new book with more than 700 pages about
         | how to build a debugger by the same Author with a lot of
         | additional information (see https://nostarch.com/building-a-
         | debugger); I recently bought it and can highly recommend it.
        
           | nyarlathotep_ wrote:
           | It's really top-shelf. Haven't enjoyed a book of this kind
           | since 'Crafting Interpreters.'
           | 
           | There's added bonuses too--the author evidently is quite a
           | skilled C++ programmer, so there's all sorts of little
           | modern-cppisms in there that I was ignorant of as someone
           | that's only ever written the language as a hobbyist.
        
           | ddelnano wrote:
           | Also second that the book is a fantastic read. I work in the
           | eBPF profiling space (on CNCF Pixie) and this has helped me
           | understand DWARF concepts that I previously took at face
           | value in our project's implementation.
        
       | apples_oranges wrote:
       | Very interesting topic. Once you know how they work, the next fun
       | thing is writing code that can detect or prevent debugging (and
       | thus circumventing your DRM or copy protection..) ;)
        
         | mdaniel wrote:
         | Relevant: _Denuvo Analysis_ -
         | https://news.ycombinator.com/item?id=44226406 - Jun, 2025 (136
         | comments)
        
       | furkansahin wrote:
       | Amazing! I'll follow. For what it's worth, I owe my career to the
       | Eclipse debugger. At some point I started using it so much that
       | my friends started to call me "debugger". I find writing code
       | together with a debugger extremely educating.
        
       | wiz21c wrote:
       | I've used debuggers now and then. What's the state of the art
       | nowadays (in terms of cool functionalities) ? (too lazy to ggl or
       | gpt it)
        
         | zeusk wrote:
         | I've used kd/windbg at Microsoft, lldb at Apple, gdb at Intel;
         | WinDbg(Next) and kd are still my absolute favorite.
         | 
         | Coolest feature of windbg is time travel debugging -
         | https://learn.microsoft.com/en-us/windows-hardware/drivers/d...
        
           | flysand7 wrote:
           | RemedyBG might also be worth looking at. It is my go to
           | debugger that I've used on Windows and it's made to look and
           | feel like the debugger that comes with Visual Studio, except
           | that it works way faster and you can hold the "Go to next
           | line" key and see the watch window update in real time.
           | Unfortunately you have to pay for it and it doesn't work on
           | linux, but oh well.
        
           | nh23423fefe wrote:
           | yeah, windbg pretty amazing. loved writing debugger scripts
           | to do repros and the state just right
        
           | gregthelaw wrote:
           | If you'll excuse the shameless self promotion, I gave a talk
           | at C++Now last year on how time travel debuggers work:
           | https://www.youtube.com/watch?v=NiGzdv84iDE
           | 
           | (Warning: contains me trying to play Doom :)
        
       | tilne wrote:
       | > But perhaps most importantly, debuggers are an intricate piece
       | of the puzzle of the design of a development platform--a future I
       | become more interested in every day, given the undeniable decay
       | infecting modern computing devices and their software ecosystems.
       | 
       | I agree with this sentiment, yet still I'm wondering if it's
       | fully justified. There has never been more bad software than
       | right now, but there has never been more good software either,
       | no?
       | 
       | It's not super relevant to the main contents of the article. Just
       | a bit that caught my attention with regards to how it made me
       | think.
        
         | indy wrote:
         | Thinking selfishly, the absolute quantity of good/bad software
         | isn't as important as the software you have to interact with on
         | a day-to-day basis. Good software is invisible and under-
         | appreciated, you use it for it's purpose and move on, bad
         | software really sticks out.
        
           | tilne wrote:
           | Good point. The amount of bad software I'm forced to interact
           | with regularly has gone up, mostly because there's so many
           | systems cobbled together in workflows now.
        
         | jxjnskkzxxhx wrote:
         | > there has never been more good software
         | 
         | Right. It's incredible that something like Linux is free. For a
         | more recent example, look at Vs code. An even more recent
         | example, look at how many open weight llms there are out there.
        
           | tilne wrote:
           | Yeah vs code was one of the first examples I thought of as
           | well. It has its own set of issues for sure, but even as a
           | former vim fanatic it's amazing from both a default
           | experience perspective and that of a power user.
        
           | bigstrat2003 wrote:
           | I definitely would not call VS Code good software, at least
           | not overall. It's good in that it's not buggy, but it uses an
           | absurdly high amount of system resources without any actual
           | benefit. It is _not_ ok that just to open a handful of small
           | text files, it uses 1-2 GB of memory.
        
             | jxjnskkzxxhx wrote:
             | Memory used is not the only metric by which to evaluate
             | software.
             | 
             | My machine has enough ram that this doesn't matter to me,
             | and Vs code allows to be very productive compared eg to
             | vim.
        
           | jesse__ wrote:
           | > For a more recent example, look at Vs code
           | 
           | HA! Comparing VSCode to Linux is like comparing an
           | overweight, acne-ridden drug addict that lives in his mom's
           | basement to an astronaut with 3 PhDs. They're barely even the
           | same species.
        
         | dahart wrote:
         | It's a good question, what exactly is this decay and why is it
         | called undeniable? Is that even true? If I think back on what
         | programming was like thirty years ago up through today,
         | everything about computing has steadily improved, gotten
         | easier, more reliable, and higher quality, on average. All
         | operating systems crash a lot less often than they used to.
         | Computing devices from desktops & laptops, to phones, to
         | routers & NASes, to household appliances, have all become
         | faster, better, cheaper, and have more features and higher
         | utility.
         | 
         | There are some ways I could see the author being somewhat
         | justified, especially when it comes to the need for debuggers.
         | Software is getting more layers. The amount of it and the
         | complexity of it is going up. Debuggers are super useful for
         | helping me understand the libraries I use that I didn't write,
         | and how my own code interacts with them. There are also a lot
         | more people writing code than there used to be, and because the
         | number of people writing code has been growing, that means the
         | distribution skews toward beginners. I feel like the number of
         | languages in popular use is also going up, and the diversity of
         | coding environments increasing. I don't know that I would frame
         | all this as 'decay' but it does mean that we're exposed to
         | higher volumes of iffy code and abstractions over time.
        
         | nyarlathotep_ wrote:
         | I think there's two 'poles' here--'good' in terms of feature
         | rich, sure, there's loads of it.
         | 
         | 'good' as in performant--an area that game dev types (rightly,
         | IMO) criticize and harp on? There's far less of it, video games
         | aside.
         | 
         | Think of the perceivable slowness of many web application you
         | use daily, Windows 11's, well, everything UI-related, etc.
         | 
         | Hell, my 3 year old iPhone can't scroll Uber Eats at 60fps
         | consistently. Is 'Uber eats' 'good'? From a functionality
         | standpoint, yeah, of course. But is displaying a list of images
         | and text and expecting it to scroll smoothly too much to ask?
         | 
         | Software can be 'good' in terms of functionality offered and
         | 'bad' at the same time, depending on your perspective.
         | 
         | IIRC I think Mr Fleury has a background in game-dev, so his
         | perspective is totally understandable. Modern games are
         | remarkable feats of software.
        
       | HexDecOctBin wrote:
       | Related: Ryan is the lead developer behind Epic Games's
       | raddebugger.
       | 
       | https://github.com/EpicGamesExt/raddebugger/
        
       | brettermeier wrote:
       | Article doesn't mentoin what RAD actually means, does someone
       | know?
        
         | memco wrote:
         | I think it's referring to this: https://www.radgametools.com/
        
           | jesse__ wrote:
           | It is
        
       ___________________________________________________________________
       (page generated 2025-06-11 23:01 UTC)