BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 新しいChrome拡張機能で、C++ソースファイルをステップ実行してコンパイル済みWasmコードをデバッグ

新しいChrome拡張機能で、C++ソースファイルをステップ実行してコンパイル済みWasmコードをデバッグ

ブックマーク

原文(投稿日:2021/01/08)へのリンク

Googleは最近、WebAssemblyファイルのデバッグに関して開発者エクスペリエンスを向上させるためにChrome DevToolsチームが行ったことの進捗状況を発表した新しい拡張機能(ベータ版)を使用すると、開発者はオリジナルのソースコードをステップ実行することで、WebAssemblyにコンパイルされたCおよびC++アプリをデバッグできる。新しい拡張機能は、逆アセンブルされたWebAssemblyコードをブラウザーで直接ステップ実行する既存の機能を補完および改善している。

GoogleのWebAssemblyアドボケイトであるIngvar Stepanyan氏は、Google Chrome開発者ツールによって提供されるWebAssemblyにコンパイルされたCコードの基本的なデバッグエクスペリエンスを紹介した。Cコードは、最適化を有効にして、デバッグオプションなしでコンパイルされる。Chrome開発者ツールは、逆アセンブルされたWebAssemblyコードを整形して出力できる。そして、コンパイルされたコードから入手可能な情報を使用して関連する関数名を生成することにより、コードの可読性の向上させている。このツールはさらに、開発者が16進数およびASCIIビューでWebAssemblyメモリにアクセスし、特定のアドレスに移動できるようにする線形メモリインスペクタを備えている。

ただし、前述の開発者ツールの機能は、大きなスクリプト(多くの場合サードパーティライブラリを含む)では不十分な場合がある。逆アセンブルされたWebAssemblyコードを元のソースコードと調整するための推測作業の量が劇的に増加するためである。

Emscriptenは、DWARFデバッグ情報を含む新しい-gフラグを提供するようになった。ソースコードに関する詳細情報を含むDWARF情報は大きくなる可能性がある。開発者は、-gseparate-dwarfオプションを使用してその情報を別のファイルに生成できる。デバッグ情報を備えたChrome開発者ツールを使用すると、開発者はWebAssemblyにコンパイルされた元のソースコードをステップ実行してアプリケーションをデバッグできる。

Chrome extension debugging WebAssembly compiled code in action
(出典: Chrome Dev Summit 2020講演)

強化されたデバッグ機能は、ベータ版でリリースされたChrome拡張機能で利用できる。拡張機能の使用方法については、添付のブログ投稿で詳しく説明されている。Emcscriptenデバッグフラグ構成の詳細については、オンラインで入手できる

優れたWebAssemblyデバッグストーリーを生成する方法が活発に調査されている。Armin Ronacher氏は最近、Sentryで早期に得られた結果を紹介し、DWARF情報を生成することの価値を説明した

より複雑なWebAssemblyターゲットをエッジ(またはブラウザー)に配布し始め、高速イテレーションを実行するときには、開発中に表示されなかった本番環境でのクラッシュとエラーが発生するでしょう。[…]

DWARFは、[WebAssembly]バイナリを理解するのに役立つデバッグ形式です。特に、バイナリ内の特定の命令がソースファイル内のどこを指しているのかを把握できます。したがって、たとえば、0x53に、42行目のファイルexample/src/foobar.rsで宣言されているfoobarという関数があることがわかります。

開発者が新しいChrome開発者ツール拡張機能を試して、発生した問題をChromiumに報告することを歓迎する。

この記事に星をつける

おすすめ度
スタイル

BT