Jim Calabro's Avatar
Jim Calabro
Personal Site
GitHub
Member since

Recent Activity

Hi all! It's been a very busy few weeks for me, but I wanted to give a quick update on &uscope since I just made a Handmade Network project page for it, and a lot's been done since I demo'ed it on Zig Showtime! [0]

  1. I completely re-wrote the variable rendering code so now it's displayed as an expandable tree. This means that things like arrays/slices, nested structs, and structs with circular pointers back to themselves are rendered properly.
  2. I also fixed a boat-load of bugs related to extracting variable data from the subordinate process, and folks are reporting some amount of success using the debugger on their real-world programs now!
  3. I added the ability to debug multi-threaded subordinates (there's still a lot of bugs and things to do here, but it's a start)
  4. Added support for Odin data types as a first-class citizen (exciting for the Handmade community hopefully! PR is coming tonight for this, but tests are passing locally)
  5. The debugger now renders very, very basic information for C++, Rust, and Jai data types. It's ugly, but can be usable if you're not doing anything insane (i.e. Jai looks OK, but C++ and Rust not so much)

Check it out if you're interested! [1]

[0] https://www.youtube.com/watch?v=stWBTv6grBc
[1] https://github.com/jcalabro/uscope

View original message on Discord

Hi all! I posted a sneak peak of this several months ago in this channel, but recently I open sourced the native Linux GUI debugger I've been working on! Check it out if you're interested!

Still very much in the "early development" phases, but if you're writing very simple C code, you might be able to get some use out of it already.

https://github.com/jcalabro/uscope

View original message on Discord

Hey all! I'd mentioned this to some folks in person at Handmade Boston, but this might be my first time sharing this project in this Discord, but I've been working for a while on a from-scratch graphical Linux debugger for ELF/DWARF binaries

It doesn't depend on GDB/LLDB/DAP/libunwind/any libraries at all related to debuggers; its only dependencies at the moment are glfw and dear imgui

Currently, it only supports C and Zig, but over time I do intend to support pretty much any popular and/or handmade language that compiles naively

Here's a quick demo to show you what it looks like. It's got a bunch of features you'd expect from a debugger like:

  • Loading debug symbols and running a child process
  • Setting/enabling/disabling/unsetting breakpoints
  • Stepping in/out/over/singe-step, continue execution, kill the subprocess, all other normal program control mechanisms
  • Displaying stdout/stderr from the child
  • Unwinding the call stack
  • Displaying local/watch variables
  • Displaying registers
  • Hex viewer for memory addresses

There's still a ton to do! I love talking about debuggers and other stuff, so if you have questions reach out

(re-posted with an mp4 rather than mkv)

View original message on Discord

&how-dwarf-works This is a pretty long post that gets in to a lot of detail on parsing the .debug_info section for ELF/DWARF binaries. As always please send me feedback/errata/questions, I love talking debuggers!

This is going to be my final post for the jam, thanks for putting this on, it was a lot of fun to buckle down and make some forward progress on a project, then actually share it! ❣️

https://www.calabro.io/dwarf/die

View original message on Discord

&how-dwarf-works The new site is live, along with the series introduction, the first meaty post on parsing ELF files, and an appendix for code samples! Let me know if you're having issues, I just deployed it a minute ago. Please also reach out with errata, questions, clarifications, etc. 😄

Next post starts on parsing actual DWARF info (we're going to parse DIEs and related info first)

https://calabro.io

View original message on Discord

&how-dwarf-works I don't have a link to share yet since it hasn't been deployed to the wild yet, but I re-did my personal blog today and wrote the first post in an entry in the "How DWARF Works" series. Next up is "how do you parse just enough ELF to get all the DWARF data you want"

View original message on Discord