From e28682cd3047bb959ceed83d80e69063887b5549 Mon Sep 17 00:00:00 2001 From: "Matsuura Tomoya(Windows)" Date: Sat, 19 Oct 2024 00:18:12 +0900 Subject: [PATCH 1/2] [obsidian] vault backup: 2024-10-19 00:18:12[ --- content/private | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/private b/content/private index 60d5f4a8..3ca80b5f 160000 --- a/content/private +++ b/content/private @@ -1 +1 @@ -Subproject commit 60d5f4a80f7bc2ad2dda5cb366b3fc84c8dac7ea +Subproject commit 3ca80b5f5a18b41571248d17befd612d91fa2ade From ab5a85cd7fd1e39ee5f6664641633df2d9703e07 Mon Sep 17 00:00:00 2001 From: "Matsuura Tomoya(Windows)" Date: Sat, 19 Oct 2024 01:18:09 +0900 Subject: [PATCH 2/2] [obsidian] vault backup: 2024-10-19 01:18:09[ --- .../WASIでmimiumをビルド&デバッグしてみる.md | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 content/WASIでmimiumをビルド&デバッグしてみる.md diff --git a/content/WASIでmimiumをビルド&デバッグしてみる.md b/content/WASIでmimiumをビルド&デバッグしてみる.md new file mode 100644 index 00000000..66da40d5 --- /dev/null +++ b/content/WASIでmimiumをビルド&デバッグしてみる.md @@ -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上ではオーディオドライバをシステムとブリッジしてくれる仕組みがないので音が出ない。 \ No newline at end of file