top | item 38601538

Show HN: FireDBG – A Time Travel Visual Debugger for Rust

44 points| chris-tsang | 2 years ago |firedbg.sea-ql.org

Hey HN, the is Chris, creator of FireDBG. We’ve been working on this debugger just about a year now. Time travel debugging isn’t a new concept, the new idea here is to use call tree visualisation to help us navigate the debug trace.

It supports various Linux distros on x64 and macOS on x64 and M1. It’s only available for Rust right now, but we do want to bring this debugging experience to other programming languages. Please give it a try! Would love to know your thoughts.

What’s your anecdote in debugging programs? My stupidity is usually in the form of: after a few hours of debugging, I realised I misused a system API (e.g. messing up length with offset) but I kept thinking I had a logic error somewhere.

By the way, I am looking for a technical co-founder. If you are also passionate about developer toolings and willing to commit to this problem, let's team up and build a company. You can find me on YC Co-Founder Matching (link in blog post).

5 comments

order

mark_undoio|2 years ago

@chris-tsang My debugging anecdotes usually involve analysing subtle failures in C code.

Those are typically days or weeks of staring and trying out different things, followed (eventually) by enlightenment. It's usually been kernel-level code (or equivalent) for me, so there are minimal conveniences / safety features available.

C makes it easy to get crazy stories because of all the ways threading or memory access can go horribly wrong. These are notorious for creating "impossible bugs". Is there an equivalent "argggh, no!" in Rust, where things are better controlled?

re the visualisation in FireDBG:

Your visualisation is really cool. I just saw it shared by some of my colleagues - we also do time travel but quite differently to you.

Debuggers are usually like looking at your program through a microscope, plus some commands for moving the microscope to different places. But that's not always what's wanted (and certainly not always what makes sense to newcomers).

Using people's spatial reasoning to help understand what's happened is quite exciting. I'd argue one of the reason that printf-debugging is so popular is because you get a clear, visual idea of roughly what happened in what order.

chris-tsang|2 years ago

Hey! I have been following the work of undo.io for a while and have watched various talks your colleagues gave. I have always been curious about how udb works under the hood, but I assume it to be specific to Linux.

I wanted to support macOS from day one, and it limited our design choices. But hey it works on my M1 Mac with smooth graphics!

What would be the best way to connect with you? Tried to DM you on Twitter

mdaniel|2 years ago

Seems to be dual MIT and Apache 2, although the "license in every subdirectory" makes it (a) not show up in the GitHub license detector (b) presumably places the burden upon the user to only use code from each directory or something https://github.com/SeaQL/FireDBG.for.Rust#license

chris-tsang|2 years ago

Thank you. I just added a LICENSE file to the repository's root.

cjbprime|2 years ago

Exciting, thanks for writing this!