[obsidian] vault backup: 2024-10-19 01:18:09[
All checks were successful
Build / build (push) Successful in 3m5s
All checks were successful
Build / build (push) Successful in 3m5s
This commit is contained in:
parent
e28682cd30
commit
ab5a85cd7f
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上ではオーディオドライバをシステムとブリッジしてくれる仕組みがないので音が出ない。
|
Loading…
Reference in New Issue
Block a user