Hacker News new | ask | show | jobs
by Veserv 1101 days ago
As someone who does debugger development as part of their day job, I can attest that this is a very good introduction to the details of basic debugger operation and implementation. If you are unfamiliar with the topic, I recommend you give it a try as it immediately starts giving useful nuggets of knowledge that are applicable in other circumstances if you are ever interested in doing low level or embedded development.
1 comments

However, note that the libelfin library that the author uses is pretty much unmaintained.

I am not sure what would be the right way to parse ELF and DWARF? libelf/libdwarf, libdw, or something else?

Also, since you are probably in the know, is liblldb "extensible", in the sense that can liblldb can be used as a foundation of a new debugger with experimental features added on top of it?

gdb uses BFD for object file access but has its own DWARF reader.
libdwarf is the most complete C library, Rust options are also quite good. We already support both DWARF and PDB in Rizin[1] but working hard on improving that support[2]

[1] https://github.com/rizinorg/rizin/tree/dev/librz/bin

[2] https://rizin.re/posts/gsoc-2023-announcement/#billow-debug-...

The Rust goblin and gimli crates are very good, I've used them for ELF symbol resolution things before and they're a dream compared to libelf.
gimli works well enough for actually parsing the DWARF format, but it abstracts over somewhat less than what you would hope (in particular, you get to do all the fun stuff of figuring out where debugging information is yourself--which gets tedious when you want to support things like split-dwarf or debug index).