#wasm-binary #source-map #wasm

wasm2map

生成包含嵌入式 DWARF 调试信息的 .wasm 文件的源映射

1 个不稳定版本

0.1.0 2023年4月19日

#549调试

每月 21 次下载
用于 cargo-wasm2map

MIT/Apache

33KB
492 代码行

Cargo WASM 源映射工具

Build status crates.io Documentation Min Rust 1.64.0

为包含 DWARF 调试信息的 WASM 二进制文件生成浏览器支持的源映射,并将其与 WASM 二进制文件关联,因此在浏览器中加载时,您可以在调试面板和控制台中看到 rust 代码行、字符和源代码(如有)。

注意:可以构建不带不安全代码的版本(唯一的不安全代码与使用 memmap2 crate 相关)。

之前

Before WASM sourcemapping

之后

After WASM sourcemapping

用法

  1. 使用 Cargo 在提供服务之前手动预处理您的 WASM 二进制文件
 cargo install cargo-wasm2map

 # Build your WASM binary the way you usually do
 cargo build --target wasm32-unknown-unknown

# Generate sourcemap for the target WASM (replace myproject with your project
# name).
 cargo wasm2map target/wasm32-unknown-unknown/debug/myproject.wasm \
    -patch -base-url https://127.0.0.1:8080

 # Serve the WASM to your browser... (i.e. https://127.0.0.1:8080 or wherever
 # your index.html is)
  1. 将其作为库用于您的实用工具
use wasm2map::WASM;

let mapper = WASM::load("/path/to/the/file.wasm");
    if let Ok(mut mapper) = mapper {
        let sourcemap = mapper.map_v3();
        mapper.patch("https://127.0.0.1:8080").expect("Failed to patch");
}

当前限制

  • 目前它不会在源映射中捆绑源代码,因此浏览器中的源代码浏览将不起作用

贡献

欢迎您的贡献,特别是错误报告和在各个平台上的测试。如果您可以提供修复方案,请随时提交一个 PR。

如果您想贡献 API 变更、扩展或新的 trait 实现,请首先提交一个 issue 并在开始 PR 之前进行讨论。有关详细信息,请阅读 CONTRIBUTING.md 文件。

许可证

根据您的选择,受 Apache License 2.0 或 MIT 许可证的许可。除非您明确表示,否则您有意提交的任何贡献,根据 Apache-2.0 许可证定义,将根据上述条款双许可,不附加任何额外条款或条件。

SPDX-许可证-标识符:Apache-2.0 MIT

依赖项

~8.5MB
~189K SLoC