simonrw / dap-gui

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DAP GUI

test

Very early prototype of a general purpose GUI debugger based on the DAP protocol and egui.

recording.mp4

Motivation

This repository exists because I do not like any of the debuggers I (currently) use day to day. I have tried:

  • pycharm
  • vs code
  • neovim dap

They do not feel right to me.

My hope with this project is to create a general purpose GUI on top of the DAP protocol that I like to use.

Features

  • fast
  • stable
  • TBD

Internals

WIP

Code layout and architecture

  • transport crate:
    • serialisation and deserialisation of wire protocol
    • send messages with and without responses
    • publish received events
  • debugger crate:
    • high level controls like continue
    • breakpoint management
    • initialisation of debugger state
  • server crate:
    • abstraction over running DAP servers
  • pcaplog crate:
    • print messages from pcap(ng) captures (prototype)
  • gui crate:
    • main GUI implementation using egui/eframe
  • state crate:
    • handles cross-session state persistence
  • launch_configuration crate:
    • represents different launch configration options, e.g. vscode launch.json files

States and transitions

The diagram below represents the different state transitions used by the debugger::Debugger type.

---
title: Debugger states
---

stateDiagram-v2
    [*] --> Initialized: [1]
    Initialized --> Running: [2]
    Running --> Paused: [2]
    Paused --> Running: [3]
    Paused --> ScopeChange: [4]
    ScopeChange --> Paused
    Running --> Terminated: [5]
    Terminated --> [*]
Loading

About


Languages

Language:Rust 88.8%Language:Python 9.3%Language:Nix 1.6%Language:Makefile 0.3%Language:Shell 0.0%