#coredump #wasm-module #rewrite

bin+lib wasm-coredump-rewriter

将 Wasm 二进制文件重写以添加 coredump 支持

17 个版本

0.1.22 2023 年 8 月 7 日
0.1.21 2023 年 8 月 4 日
0.1.20 2023 年 7 月 27 日
0.1.15 2023 年 5 月 27 日
0.1.7 2023 年 1 月 31 日

#1158WebAssembly


wasmgdb 中使用

MIT 许可协议

165KB
4K SLoC

wasm-coredump-rewriter

wasm-coredump-rewriter 用于向编译的 Wasm 模块添加 Coredump 生成功能。

安装

cargo install wasm-coredump-rewriter

用法

步骤 1:重写 Wasm 模块

重写源 Wasm 模块以注入 Coredump 运行时代码。运行时会捕获陷阱(不包括宿主函数中的陷阱或内存违规)并生成 coredump。

使用以下命令

wasm-coredump-rewriter < source.wasm > output.wasm

Coredump 运行时会有性能开销。

步骤 2:Wasm 执行时遇到陷阱

您的程序进入了一个陷阱并生成了 Coredump。

要提取 Coredump,请将 Wasm 实例内存写入文件,例如在 JavaScript 中

const instance = await WebAssembly.instantiate(...);

try {
    wasi.start(instance);
} catch(err) {
    const image = new Uint8Array(instance.exports.memory.buffer);
    writeFile("coredump." + Date.now(), image);
}

步骤 3:分析 / 调试 coredump

请参阅 wasmgdb 以分析 / 调试 coredump。

依赖项

~5–18MB
~181K SLoC