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 日 |
#1158 在 WebAssembly
在 wasmgdb 中使用
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