Merge remote-tracking branch 'home/v4' into v4
All checks were successful
Build / build (push) Successful in 3m31s
All checks were successful
Build / build (push) Successful in 3m31s
This commit is contained in:
commit
5cc34240e5
68
content/WASIでmimiumをビルド&デバッグしてみる.md
Normal file
68
content/WASIでmimiumをビルド&デバッグしてみる.md
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#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上ではオーディオドライバをシステムとブリッジしてくれる仕組みがないので音が出ない。
|
@ -1 +1 @@
|
|||||||
Subproject commit 60d5f4a80f7bc2ad2dda5cb366b3fc84c8dac7ea
|
Subproject commit 3ca80b5f5a18b41571248d17befd612d91fa2ade
|
Loading…
Reference in New Issue
Block a user