jcalabro/uscope
μscope 🔬
master.tar.gz
master
master
uscope (pronounced "microscope") is a native code graphical debugger and introspection toolchain for Linux.
See here for background and motivation on the project.
Join the Discord if you're interested in talking debuggers.
uscope is not far enough along to consider using as a daily-driver. It's a side project I'm working on for fun and because I need a better debugger for my own use.
In fact, it's currently undergoing a total rewrite of its user interface. I would not recommend even attempting to use it at this time - but stay tuned! See more information on the motivation for this change here. If you want to try to use the old native Linux UI, you can clone this tag, though it likely will not work for your real-world use case.
This is a birds-eye overview of the features I'd like implemented before I'd personally be able to completely ditch other "traditional" debuggers. In no particular order:
localhost
)Other long-term features that will be implemented are:
/proc
views (there's lots of interesting information in there)Similarly, the following features are non-goals of the project:
Do not attempt to build and run uscope at this time. It is under heavy development and is in the middle of a total UI rewrite.
Probably a long time (could easily be a year, or several). I have a day job, and this is a passion project I work on in my spare time. Check back often for updates!
The absolute best thing you can do is reach out and talk debuggers so I know that there is interest in the the project. We have a Discord, and you can find my email on my personal site. I love hearing from you!
You could also consider sponsoring my work. This is a very strong signal to me that I'm focused on things that matter.
Additionally, please consider donating to the Zig Software Foundation!
Once the project is further along, yes, but not now.
There are a wide variety of use-cases for an introspection library outside of traditional debuggers (i.e. reverse engineering tools, novel forms of debuggers, etc.). By making this system reusable and nicely packaged, it encourages the entire ecosystem of debugging tools to improve, not just this one project. That being said, we are focusing intently on the traditional debugger first, and then once the core of the system is solid, we will make it more intentionally accessible to other consumers.
Regarding DAP, This toolchain intends to be lower-level and broader in scope than something like DAP would enable. I do not think DAP is very good, but lots of editors out there already speak it, so we're partially stuck with it. However, by creating an introspection library, we easily create a separate DAP-compatible executable completely isolated from the native GUI we're building so that way neither is bloated by the other.
In short, building as a library allows us all to build many novel, simple, and focused introspection tools.