🦀
wasm-bindgen + VSCode でデバッグする
この記事で取り扱わない内容
- 次のツールのインストール方法
- Rust
- wasm-pack
VSCode に WebAssembly DWARF Debugging をインストールする
VSCode の拡張機能タブから、WebAssembly DWARF Debugging をインストールして起動します。
プログラムをビルドする
この記事では、次のソースコードをデバッグ情報付きでビルドします。
lib.rs
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
pub fn alert(s: &str);
}
#[wasm_bindgen]
pub fn greet(name: &str) {
let formatted = format!("Hello, {}!", name);
alert(&formatted);
}
[package]
name = "rusttest"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
wasm-bindgen = "0.2.88"
[package.metadata.wasm-pack.profile.dev.wasm-bindgen]
dwarf-debug-info = true
index.html
<!doctype html>
<html lang="en-US">
<head>
<meta charset="utf-8" />
<title>hello-wasm example</title>
</head>
<body>
<script type="module">
import init, { greet } from "./pkg/rusttest.js";
init().then(() => {
greet("WebAssembly");
});
</script>
</body>
</html>
ビルドコマンド
wasm-pack build --target web --dev
デバッグの構成をする
VSCode の実行とデバッグタブ中の、「実行とデバッグ」ボタンを押して、「Web アプリ (Chrome)」または「Web アプリ (Edge)」を選びます。
この記事では、自動生成された launch.json をそのまま使います。
launch.json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "localhost に対して Chrome を起動する",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
Web サーバを起動する
wasm-bindgen でビルドしたアプリは、ダブルクリックでは実行できないので Web サーバを介してアクセスします。好きな Web サーバを使ってください。
cargo install http-server
http-server --port 8080
VSCode からデバッガを起動する
VSCode の実行とデバッグタブから、デバッグを開始します。初回のブラウザ起動ではブレークポイントが反応しないことがあるので、反応しなかった場合はブラウザをリロードします。
Discussion