Skip to content
/ Dumpy Public

Dumpy is a Web application that digests dumps from applications that have either πŸ’₯ crashed πŸ”₯ or simply decided to take a dump. ✨

License

Notifications You must be signed in to change notification settings

clavin/Dumpy

Repository files navigation

./src/assets/dumpy.svg

Hiya, I'm Dumpy.

I'm the crash assistant and my job is to help you with your (crash) dumps.

✧ο½₯゚: * ✦ . ο½₯゚

πŸ“„ Dumpy

Dumpy is a Web application that digests dumps from applications that have either πŸ’₯ crashed πŸ”₯ or simply decided to take a dump. ✨ These dumps contain a trove of data about the running (or not running) state of an application, such as:

  • The address of a malformed instruction or incorrect memory read
  • Call stack traces
  • Information about the processor and its registers
  • Sometimes an associated error message and other more gifts

Dumpy formats and displays all this information in an interactive and purpose-built interface. Whether you need to skim the important bits quickly or dive deep into a dump, Dumpy can help you with your dumps. 😊

A screenshot of this web application displaying a sample dump.

Tell Me More...

🚧 Work in Progress

First and foremost, Dumpy is not a completed project. Much of Dumpy's potential is still to be realized. Still, Dumpy is already helpful enough to

πŸ•ΈοΈ Local Dump Parsing

When you give a precious dump to Dumpy, that dump isn't uploaded anywhere. Dumpy is powerful enough to parse and analyze your dump on your own machine. Dump parsing is powered by a WebAssembly module written in Rust.

Currently, the only dump format supported is the minidump format, used by Google Chrome/Chromium, Firefox, and Windows, among others. In particular, the library Dumpy uses to process minidump files supports the dumps produced by the MinidumpWriteDump API on Windows as well as the Google Breakpad library.1

πŸ“ To-do

  • Demo: produce a GitHub Pages demo branch
  • Symbols: the names and other source information that helps enrich a dump
    • Symbolication: the process of enriching a dump using symbols
    • Symbol Servers: ability to specify servers to fetch symbols from
    • Local Symbols: ability to use local symbol files
    • Custom Symbol Proxy: a symbol proxy to let the web app retrieve symbols from servers that don't include an appropriate Content Security Policy header.
      • This symbol proxy should be able to run locally as well as deployed.
  • Modules: a view for the modules in a dump
  • Sidebar: it would be nice for the sidebar to actually do something :) but at least it looks pretty.
  • Dark theme: your eyes are important.

How Do I Use It?

If you need a sample file to test with, I've included one in this repo! 😊 I have 'borrowed' this dump from the rust-minidump project's test files.

🌐 Web

You can try the online demo. If you need one, you can use this sample dump file.

πŸ’» Locally

What you'll need:

  • A recent version of Node.js, I'd ballpark it to be version 16+
    • NPM, which generally comes with Node.js
  • wasm-pack to build the dump processor
  1. Grab your copy of this repository

    $ git clone https://github.com/clavin/Dumpy.git
    $ cd Dumpy
  2. Install the project build dependencies

    $ npm install
  3. Build the dump processor crate

$ cd crate
$ wasm-pack build

$ cd ..
  1. Build the web app

    $ npm run build
    
    # (If you need to specify any additional Vite options, like `--base`, this is
    # the place to do it.)
  2. Enjoy! The web app is available in the dist/ directory. πŸŽ‰

  • Alternatively, if you're looking to hack on Dumpy, I would recommend using the npm run dev command for an ergonomic web development workflow.

πŸ† Credits & Kudos

Footnotes

  1. Supported formats according to the minidump crate as of 2023 April 16. ↩

About

Dumpy is a Web application that digests dumps from applications that have either πŸ’₯ crashed πŸ”₯ or simply decided to take a dump. ✨

Topics

Resources

License

Stars

Watchers

Forks