First time I really needed GDB was when I was debugging the generated code from a compiler that I was writing. It work wonders to aid me in the debugging process, but the interface was really bad. I wanted to inspect memory, the registers and step instruction by instruction, gdb makes all of this possible, but not in a nice way.
Recently I came across the idea of Tools for Thought which can be distilled as:
A tool that helps your thinking process, e.g: The Hindu–Arabic numeral system and Adobe Photoshop.
So, this project is an attempt to create a tool for thought that helps people to reason more deeply about the workings of computer programs.
Right now we have a vertical slice of the project (we have a thread running GDB that communicates to a thread that displays the source code). We have a few threads running, those are the main ones:
- GDB thread, it pipes the stdin/stdout to and form the GDB's process.
- Graphics thread.
I first considered writing this in C++, but then I thought about writing multithreaded code in it.
- Browse variables in a hierarchical manner.
- Set breakpoints
This application will be refactored into a separate library and a frontend, this way many applications will be able to use GDB's capabilities in a easy way.
If you want to help you need to setup the developing enviroment.
- Install the rust toolchain https://rustup.rs/
- Clone the repository
- Build this project's documentation
cargo doc --no-deps --open