An experimental GUI for rust-minidump

Overview

minidump-debugger

crates.io Rust CI

An experimental GUI for rust-minidump based on egui.

NOTE: if building from source on linux, you may need to install the packages egui depends on.

Functionality

At this point the UI is mostly at parity with minidump-stackwalk

  • raw minidump inspection (for debugging weird minidumps)
  • stackwalking (via cfi, frame pointers, and scanning)
  • symbolication (via symbol server, either using native binaries or breakpad .sym)
  • processing the minidump's metadata
  • trace logs for debugging the stackwalk

Future Functionality?

  • (on interactive branch) more responsive live results
  • (on interactive branch) log searching/sorting/filtering based on tracing spans ("give me all the info on this thread")
  • builtin hexdump viewing (we currently get some from the raw minidump printing, but it's very slow because it doesn't know where we're looking)
  • surface more random pieces of information (crash time, endianess, ...)
  • (on interactive branch) Linux* stream raw inspection (they have a weird format)
  • surface recovered arguments (currently only computed in the x86 backend, kinda jank)
  • steal some socc-pair features? (benching, fetching dumps, mocking symbol server, diffing)
  • allow the dump to be pointed at a build dir to compute local symbols?

Future Cleanups?

  • properly expand table row-heights for line-wrapping items
  • better pointer-sized-value formatting (pad 64-bit to 16 chars)
  • make more text selectable (bare labels suck for most of what we display)
  • don't make the symbol cache checkbox so terribly dangerous (will blindly delete the dir at that path, should just disable the cache)

Screenshots

Screenshot 2022-07-31 100438 Screenshot 2022-07-31 121102 Screenshot 2022-07-31 121029 Screenshot 2022-07-31 100542

Comments
  • local dump_syms integration?

    local dump_syms integration?

    minidump-processor has support for fetching binaries from a symbol server and running dump_syms on them, but in principle minidump-debugger could go one step further and support you pointing it at a build dir/exe and running dump_syms on it.

    This would probably be the most useful workflow for random users.

    Bonus points if it can detect "what you did wrong" with your debug flags and recommend improvements?

    opened by Gankra 0
  • socc-pair style streamlined mozilla workflow?

    socc-pair style streamlined mozilla workflow?

    https://github.com/Gankra/socc-pair/ has streamlined workflows for fetching minidumps from https://crash-stats.mozilla.org/

    If enough people from mozilla use this in anger, it might be worth copying. Or if we can make it configurable enough that e.g. someone from sentry could use it for their backend too?

    opened by Gankra 0
  • replace the checkbox on symbol-cache with a

    replace the checkbox on symbol-cache with a "delete cache directory" button

    Clearing the checkbox makes the processor thread delete the directory before running, which is just really fuckin' spooky if you don't know that and accidentally set the string to something bad like the current dir! Ideally we should have a proper button which just enqueues a command for minidump-processor.

    This requires a change to minidump-processor to give it a proper "queue" of commands because it will be the first command that is "TCP-like" and not "UDP-like". That is, currently there is only one buffered command because all the current commands basically obsolete whatever the processor is currently doing (hence why cancellation of the stackwalk is done by every command).

    I think we do want some amount of cancellation though, so maybe there should be a queue of TCP-like commands and a single UDP-like command. Alternatively it might be desirable to also queue up the UDP-like ones too so that the processor is forced to ack-back even if it "notices" that the commands are obsoleted.

    There is currently some mild racey-ness in the code where I believe in principle you could get the UI confused about which partial-processed report it's doing incremental updates too, although I don't think this is a very serious concern in practice, as it would require sending a lot of different commands in incredibly fast succession, and having the processor grab an update in the middle of that.

    opened by Gankra 0
  • better register display

    better register display

    • option 1: make the current register display in ui_processed be double-columned, so we can increase vertical density

    • option 2: make the register display just a free-form text box we manually layout (cf #4)

    • option 3: put them nested under frames in the stackwalk

    • option 4: same as option 3, but make it collapsable?

    I'm inclined to 1 or 2, but 3/4 has precedent in minidump-stackwalk --human

    In principle this UX question also extends to any future attempts to expose recovered function arguments.

    opened by Gankra 0
  • bultin hexdump viewer?

    bultin hexdump viewer?

    Thanks to @marti4d, rust-minidump's print methods (which power "raw dump" views in this tool and minidump-stackwalk) have dope hexdump formatting. However we're an interactive display, and should in principle be able to:

    • more interactively/prettily display those
    • use the current pane's scroll to intelligently only render the visible subset

    Right now there's a checkbox at the bottom of settings "hide memory dumps in raw mode" which is enabled by default that turns on the --brief output that supresses these dumps. The reason I have it flipped on by default is that in the current form there's no way to interactively "collapse" the dumps, and some of them are genuinely so long that they lag out the UI.

    So my current workflow is to start with them off, find a region I want a hexdump for, uncheck the setting, and then go back and view it.

    opened by Gankra 0
  • symbol stats viewer?

    symbol stats viewer?

    processed_state has info on whether symbols were missing/corrupt, where they were found, etc. That would be nice to surface, along with any other stats.

    opened by Gankra 0
Releases(v0.3.1)
Owner
Rust crates for working with minidump files
null
rd is a record/replay debugger written in rust

rd is a record/replay debugger written in rust

Sidharth Kshatriya 948 Dec 27, 2022
A Simple debugger for embedded rust.

This is a debugger for embedded rust code. It is in an early state so it doesn't work for a lot of different microcontrollers.

Niklas 4 Oct 16, 2022
rsdb, linux debugger written in Rust

rsdb Linux debugger written in Rust Road to version 1.0.0 Basic memory reading / writing ELF binary parsing Entry point Section Symbol Disassembler x8

Younghoo Kim 4 May 2, 2022
An experimental GUI for rust-minidump

minidump-debugger An experimental GUI for rust-minidump based on egui. NOTE: if building from source on linux, you may need to install the packages eg

null 43 Apr 6, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
MiniDump a process in memory with rust

safetydump Rust in-memory MiniDump implementation. Features ntdll!NtGetNextProcess to obtain a handle for the desired ProcessId as opposed to kernel32

null 26 Oct 11, 2022
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Dec 31, 2022
An experimental GUI library for Rust 🦀

guee ?? Nothing to see here ?? ... But if you insist: This is an experimental UI library I'm working on for Blackjack. The idea is to find a very prag

null 12 Feb 1, 2023
A simple, cross-platform GUI automation module for Rust.

AutoPilot AutoPilot is a Rust port of the Python C extension AutoPy, a simple, cross-platform GUI automation library for Python. For more information,

null 271 Dec 27, 2022
An easy-to-use, 2D GUI library written entirely in Rust.

Conrod An easy-to-use, 2D GUI library written entirely in Rust. Guide What is Conrod? A Brief Summary Screenshots and Videos Feature Overview Availabl

PistonDevelopers 3.3k Jan 1, 2023
Rust bindings for the FLTK GUI library.

fltk-rs Rust bindings for the FLTK Graphical User Interface library. The FLTK crate is a crossplatform lightweight gui library which can be statically

Mohammed Alyousef 1.1k Jan 9, 2023
Idiomatic, GTK+-based, GUI library, inspired by Elm, written in Rust

Relm Asynchronous, GTK+-based, GUI library, inspired by Elm, written in Rust. This library is in beta stage: it has not been thoroughly tested and its

null 2.2k Dec 31, 2022
Clear Coat is a Rust wrapper for the IUP GUI library.

Clear Coat Clear Coat is a Rust wrapper for the IUP GUI library. IUP uses native controls and has Windows and GTK backends. A macOS backend has been o

Jordan Miner 18 Feb 13, 2021
A cross-platform GUI library for Rust, inspired by Elm

Iced A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm. Features Simple, easy-to-use, batteries-included AP

Héctor Ramón 17.5k Jan 2, 2023
Truly cross platform, truly native. multiple backend GUI for rust

WIP: Sauron-native a rust UI library that conquers all platforms ranging from desktop to mobile devices. An attempt to create a truly native, truly cr

Jovansonlee Cesar 627 Jan 5, 2023
A cross-platform GUI library for Rust focused on simplicity and type-safety

A cross-platform GUI library for Rust, inspired by Elm

Héctor Ramón 17.5k Jan 8, 2023
A *seriously* no-bullshit Neovim GUI written in Rust and Tauri

Looking for a shareable component template? Go here --> sveltejs/component-template svelte app This is a project template for Svelte apps. It lives at

null 13 Nov 21, 2022
A simple news reading GUI app built in Rust

Headlines [WIP] A native GUI app built with Rust using egui. Uses newsapi.org as the source to fetch news articles. This is a WIP and the current stat

creativcoder 89 Dec 29, 2022
Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of your device.

Universal Android Debloater GUI DISCLAIMER: Use it at your own risk. I am not responsible for anything that could happen to your phone. This software

w1nst0n 7k Jan 7, 2023
Build GUI applications with minimal dependencies in Rust

winapi-app-windows A crate to build applications' windows in Windows using WinAPI. This would be less confusing if the operating system was called som

Lonami 5 Jul 26, 2022