quartz-research-note/content/WASIでmimiumをビルド&デバッグしてみる.md
Matsuura Tomoya(Windows) ab5a85cd7f
All checks were successful
Build / build (push) Successful in 3m5s
[obsidian] vault backup: 2024-10-19 01:18:09[
2024-10-19 01:18:09 +09:00

68 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#mimium #memo
- std::path::canonicalize(std::fs::canonicalizeへのエイリアス)はプラットフォーム依存の挙動でwasmやWASIだとランタイムでErrを返して落ちるっぽい
## 環境構築
RustにWasiターゲットを追加する
```sh
rustup target add wasm32-wasip2
```
wasmtime(WASI用にビルドされたやつを動かすためのランタイム)のインストール
```sh
curl https://wasmtime.dev/install.sh -sSf | bash
```
なぜかMacだときちんと入らなかったので手動で落としてきて、`~/.wasmtime/bin/wasmtime`に配置しておく
## VSCodeでブレークポイントかけてデバッグする
launch.jsonにこういうのを追加する
```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上ではオーディオドライバをシステムとブリッジしてくれる仕組みがないので音が出ない。