6 releases

0.2.6 Jul 21, 2023
0.2.5 Mar 26, 2023
0.2.3 Nov 9, 2022
0.1.0 Nov 5, 2022

#588 in Debugging

MIT and maybe GPL-2.0-only

28KB
427 lines

Cannonball 💣

Cannonball is a framework for building QEMU plugins in Rust! Anything you can do in a QEMU TCG plugin in C, you can do with cannonball.

Write plugins that run with minimal overhead and as much functionality as you can dream of!

Examples

There are a couple examples provided here!

  • jaivana A simple tracer that logs a configurable set of events to a file or stdout.
  • mons meg A tracer that logs the same events as Jaivana, but uses Tokio to run the trace in an async environment, with communication with the host over a UNIX socket instead of anonymous pipes.

Documentation

Unfortunately, the documentation isn't building on docs.rs. Something about building the entirety of QEMU is busting their process limits a little! For now, you can build and view local docs with:

cargo doc --open

Or, the source code is all doc-stringed up :)

Installation

Just add this to your Cargo.toml:

cannonball = "0.2.3"

Example

Here's a quick recording of the Jaivana example plugin and driver!

asciicast

Dependencies

~0–5MB
~86K SLoC