Implement Wasmtime's new API as designed by RFC 11. This is quite a large commit which has had lots of discussion externally, so for more information it's best to read the RFC thread and the PR thread.
28 lines
1.1 KiB
Rust
28 lines
1.1 KiB
Rust
//! Example of enabling debuginfo for wasm code which allows interactive
|
|
//! debugging of the wasm code. When using recent versions of LLDB
|
|
//! you can debug this executable and set breakpoints in wasm code and look at
|
|
//! the rust source code as input.
|
|
|
|
// To execute this example you'll need to run two commands:
|
|
//
|
|
// cargo build -p example-fib-debug-wasm --target wasm32-unknown-unknown
|
|
// cargo run --example fib-debug
|
|
|
|
use anyhow::Result;
|
|
use wasmtime::*;
|
|
|
|
fn main() -> Result<()> {
|
|
// Load our previously compiled wasm file (built previously with Cargo) and
|
|
// also ensure that we generate debuginfo so this executable can be
|
|
// debugged in GDB.
|
|
let engine = Engine::new(Config::new().debug_info(true))?;
|
|
let mut store = Store::new(&engine, ());
|
|
let module = Module::from_file(&engine, "target/wasm32-unknown-unknown/debug/fib.wasm")?;
|
|
let instance = Instance::new(&mut store, &module, &[])?;
|
|
|
|
// Invoke `fib` export
|
|
let fib = instance.get_typed_func::<i32, i32, _>(&mut store, "fib")?;
|
|
println!("fib(6) = {}", fib.call(&mut store, 6)?);
|
|
Ok(())
|
|
}
|