Matsuura Tomoya(Windows)
ab5a85cd7f
All checks were successful
Build / build (push) Successful in 3m5s
2.4 KiB
2.4 KiB
#mimium #memo
- std::path::canonicalize(std::fs::canonicalizeへのエイリアス)はプラットフォーム依存の挙動でwasmやWASIだとランタイムでErrを返して落ちるっぽい
環境構築
RustにWasiターゲットを追加する
rustup target add wasm32-wasip2
wasmtime(WASI用にビルドされたやつを動かすためのランタイム)のインストール
curl https://wasmtime.dev/install.sh -sSf | bash
なぜかMacだときちんと入らなかったので手動で落としてきて、~/.wasmtime/bin/wasmtime
に配置しておく
VSCodeでブレークポイントかけてデバッグする
launch.jsonにこういうのを追加する
{
"type": "lldb",
"request": "launch",
"name": "Debug wasi executable",
"cargo": {
"args": [
"build",
"--bin=mimium-cli",
"--package=mimium-cli",
"--target=wasm32-wasip2"
],
"filter": {
"name": "mimium-cli",
"kind": "bin"
}
},
"program": "~/.wasmtime/bin/wasmtime",
"args": [
"run",
"--dir",
".",
"-D",
"debug-info",
"target/wasm32-wasip2/debug/mimium-cli.wasm",
"mimium-cli/examples/sinewave.mmm"
],
"cwd": "${workspaceFolder}",
"env": {
"_NO_DEBUG_HEAP": "1"
}
},
コマンドラインオプションとかはよしなにする。_NO_DEBUG_HEAP
はWindows環境でデバッグすると極端に遅くなる時につける環境変数らしい。WSLだと関係ないのだろうか、よくわからん。
立ち上げてから動き始めるまで15秒くらいかかるので不安になるが、とりあえずブレークポイントは張れた。変数の中身とかきちんと覗けないのはあるが、落ちる原因の特定ぐらいまではできて便利。
wasmtimeにはオーディオドライバがない(当たり前)
ここまでやってエラーで落ちることはなくなったが、Wasmtime上ではオーディオドライバをシステムとブリッジしてくれる仕組みがないので音が出ない。