メインコンテンツまでスキップ
Version: Next

デバッグ

パニック

Rust シンボルで良いスタックトレースをするには console_error_panicクレートを使用してください。 注意として、cargo-webでビルドされたものとは互換性がありません。

コンソールでのログ

一般的に、Wasm の Web アプリはブラウザの API と連携することができ、console.logの API も例外ではありません。 いつくかの選択肢があります:

wasm-logger

このクレートは Rust のlogクレートと親和性があります。

// セットアップ
fn main() {
wasm_logger::init(wasm_logger::Config::default());
}

// 使用方法
log::info!("Update: {:?}", msg);

ConsoleService

このサービスは Yew に含まれており、"services"の機能が有効化されている場合は利用可能です。

// 使用方法
ConsoleService::info(format!("Update: {:?}", msg).as_ref());

ソースマップ

今のところは Rust/Wasm の Web アプリにはソースマップへの第一級のサポートがありません。 もちろん、これは変更される可能性があります。これが当てはまらない場合、または進捗が見られる場合は、変更を提案してください!

最新情報

[2019 年 12 月] Chrome DevTools update

やらなければいけないことがまだたくさんあります。例えばツール側では Emscripten(Binaryen)と wasm-pack(wasm-bindgen)がそれらが実行する変換に関する DWARF 情報の更新をまだサポートしていません。

[2020] Rust Wasm デバッグガイド

残念なことに、WebAssembly のデバッグの物語はまだ未成熟です。ほとんどの Unix のシステムではDWARFは実行中のプログラムをソースレベルで検査するためにデバッガに必要な情報をエンコードするために使用されます。Windows には同様の情報をエンコードする代替形式があります。現在、WebAssembly に相当するものはありません。

[2019] Rust Wasm ロードマップ

デバッグはトリッキーです。なぜなら、多くの話はこの活動チームの手の届かないところにあり、WebAssembly の標準化団体とブラウザ開発者ツールを実装している人たちの両方に依存しているからです。