#coredump #api #generate #rust

wasm-coredump-builder

Wasm coredump builder API for Rust

13 releases

0.1.22 Aug 7, 2023
0.1.21 Aug 4, 2023
0.1.20 Jul 27, 2023
0.1.15 May 27, 2023
0.1.11 Feb 24, 2023

#1146 in WebAssembly

Download history 1524/week @ 2024-01-03 1229/week @ 2024-01-10 505/week @ 2024-01-17 1022/week @ 2024-01-24 1044/week @ 2024-01-31 769/week @ 2024-02-07 721/week @ 2024-02-14 1328/week @ 2024-02-21 914/week @ 2024-02-28 1048/week @ 2024-03-06 876/week @ 2024-03-13 817/week @ 2024-03-20 439/week @ 2024-03-27 1251/week @ 2024-04-03 1058/week @ 2024-04-10 479/week @ 2024-04-17

3,293 downloads per month
Used in 2 crates

MIT license

13KB
239 lines

WebAssembly Coredump

Monorepo for generating, parsing, debugging WebAssembly coredumps.

See demo for an overview about how to use Wasm coredumps.

Debugging

Think gdb for WebAssembly

See wasmgdb for documentation.

Use Coredump today

Since no Wasm engine support exists today, you an use wasm-coredump-rewriter to inject Coredump support.

Coredump format

See specificiation.

Troubleshooting

Running into stack overflow

Some Wasm binaries have very recursive flow of control, increase the maximum stack size:

$ ulimit -s 160000

lib.rs:

Rust API for building Wasm Coredump.

Examples

let mut coredump_builder = wasm_coredump_builder::CoredumpBuilder::new()
        .executable_name("/usr/bin/true.exe");

{
    let mut thread_builder = wasm_coredump_builder::ThreadBuilder::new()
        .thread_name("main");

    let coredump_frame = wasm_coredump_builder::FrameBuilder::new()
        .codeoffset(123)
        .funcidx(6)
        .build();
    thread_builder.add_frame(coredump_frame);

    coredump_builder.add_thread(thread_builder.build());
}

let coredump = coredump_builder.serialize().unwrap();

Dependencies

~320KB