Expand description
§dbg-rs 🦀
Safe Rust bindings for the COM interfaces of the Windows debugging engine.
§Features
- ✅ Safe Rust bindings for Windows debugging interfaces.
- ✅ Easy-to-use macros for logging to the debugger.
- ✅ Abstractions for managing symbols, memory, and CPU registers.
- ✅ Works seamlessly with the Windows COM-based debugging system.
§Getting started
Add dbg
to your project by updating your Cargo.toml
:
cargo add dbg-rs
§Usage
The dbg-rs
library provides utilities to interact with the Windows debugging engine, such as executing commands, logging messages, and inspecting debug symbols. Below are some common use cases:
§Logging to the Debugger
Use the dprintln!
macro to send formatted messages to the debugger output:
use dbg_rs::dprintln;
// Example usage
dprintln!(dbg, "Hello, {}!", "Debugger");
dprintln!(dbg, "Number: {}", 42);
§Executing Commands
Running commands in the debugger:
use dbg_rs::Dbg;
dbg.exec(".echo Hello, Debugger!")?;
§Reading Virtual Memory
Access specific regions of the debugged process’s memory:
use dbg_rs::Dbg;
let mut buffer = vec![0u8; 128];
dbg.read_vaddr(0x7FFEBEEF0000, &mut buffer)?;
println!("Read memory: {:?}", &buffer[..16]); // Print first 16 bytes
§Additional Resources
For more examples, check the examples folder in the repository.
§License
This project is licensed under the MIT License. See the LICENSE file for details.
Modules§
- error
- The
error
module defines error types used throughout the library.
Macros§
- dprint
- Macro to send formatted messages to the debugger using
Dbg::print
- dprintln
- Macro to send formatted messages to the debugger using
Dbg::println
.
Structs§
- Dbg
- Represents a debugging interface that allows execution of commands, querying and managing debug symbols, inspecting memory, and interacting with registers.
Enums§
- Module
- Represents either a module address or a module name.
Traits§
- Debug
Value - A trait to extract a value from a [
DEBUG_VALUE
].