The Userland Debugger Interface (UDI) intends to provide a full-featured debugger interface for native applications, implemented completely in userland without utilizing debugging APIs provided by the OS/kernel.
For a discussion of the motivation for this project, see the design document.
The foundation of UDI is a CBOR-based protocol that defines the communication between a debuggee and a debugger.
For more information about the protocol, see the protocol document.
This project provides the following libraries:
The libudi library, written in Rust, provides an API for controlling a debuggee. This library is intended to be a fundamental part of a debugger and uses a pseudo-filesystem as the transport mechanism for the UDI protocol.
The libudirt library, written in C, implements the debuggee side of the UDI protocol via a pseudo-filesystem, with no cooperation or modification to the native application being debugged.
The libudi-c library, written in Rust, is a wrapper around libudi that provides a C ABI API to libudi.
UDI is licensed under the MPL 2.
The AUTHORS file provides a list of contributors to the UDI project.