Hello Rustaceans! I’m excited to announce that I finally got around to releasing the first Rust crate I ever wrote: minidump. It’s a parser for Microsoft’s minidump file format, which is used for crash reporting and post-mortem debugging. We use minidumps on all platforms for Firefox crash reporting (using Google Breakpad), so having nice tools to work with them is important!
This crate was the first Rust project I ever wrote, starting a few years ago after attending a Rust training session. I added a lot of features to it but never got around to releasing it. Having found a group of folks that are interested in working on debugging tools in Rust I thought it’d be prudent to actually publish this crate even if it’s not a fantastic example of Rust. The API and implementation could both stand some work. (After writing lots of other Rust code over the past two years the code for this crate makes me cringe a little!)
I had originally written this as a large monolithic crate, so I split it into a few bits to make it easier to work with:
- minidump-common, which is just some low-level type definitions (not super useful on its own)
- minidump, which contains a minidump parser and types to get useful data out of minidump files
minidump-processor, which has code for producing symbolicated stack traces from minidump files (including a
minidump_stackwalktool that functions like the one from Breakpad)
- breakpad-symbols, a crate for parsing Breakpad’s text symbol format and looking up function and source line info by address