Memory Inspector: ArrayBuffer、TypedArray、DataView、Wasm Memory を検査します。

ソフィア・エメリアノバ
Sofia Emelianova

新しいメモリ インスペクタを使用して、JavaScript の ArrayBufferTypedArrayDataView のメモリや、C++ で記述された Wasm アプリケーションの WebAssembly.Memory を検査できます。

Memory Inspector を開く

Memory Inspector を開く方法はいくつかあります。

メニューから開く

  1. DevTools を開きます
  2. その他のオプション その他 > [その他のツール] > [Memory Inspector] をクリックします。 Memory Inspector のメニュー

デバッグ中に開く

  1. JavaScript ArrayBuffer を使用してページを開きます。こちらのデモページを使用します。
  2. DevTools を開きます
  3. [Sources] パネルで demo-js.js ファイルを開き、18 行目にブレークポイントを設定します。
  4. ページを更新してください。
  5. 右側の [Debugger] ペインで [Scope] セクションを開きます。
  6. Memory Inspector は次の方法で開くことができます。

    • アイコンからbuffer プロパティの横のアイコンをクリックします。
    • コンテキスト メニューから使用する場合buffer プロパティを右クリックして、[Reveal in Memory Inspector パネル] を選択します。

    Memory Inspector パネルに表示

複数のオブジェクトを検査する

  1. DataViewTypedArray でも検査できます。たとえば、b2TypedArray です。これを調べるには、b2 プロパティを右クリックして [Reveal in Memory Inspector パネル] を選択します(TypedArray または DataView のアイコンはまだありません)。
  2. メモリ インスペクタで新しいタブが開きます。複数のオブジェクトを一度に検査できます。 メモリ インスペクタの新しいタブ

Memory Inspector

Memory Inspector

メモリ インスペクタは、次の 3 つのメインエリアで構成されています。

ナビゲーション バー

  1. アドレス入力には、現在のバイトアドレスが 16 進数形式で表示されます。新しい値を入力すると、メモリバッファ内の新しい位置にジャンプできます。たとえば、「0x00000008」と入力します。
  2. メモリバッファがページより長くなることがあります。スクロールする代わりに、ボタンとボタンを使用して移動できます。
  3. 左側のボタンで前後のナビゲーションができます。
  4. デフォルトでは、バッファはステッピング時に自動的に更新されます。最新でない場合は、[更新] ボタンをクリックすると、メモリを更新して内容を更新できます。

メモリバッファ

メモリバッファ

  1. 左側には、住所が 16 進数形式で表示されます。
  2. memory は 16 進数形式でも示され、各バイトはスペースで区切られます。現在選択されているバイトがハイライト表示されます。バイトをクリックするか、キーボードで移動できます(左、右、上、下)。
  3. メモリの ASCII 表現が右側に表示されます。バイト上で選択したビットに対応する値がハイライト表示されます。メモリと同様に、バイトをクリックするか、キーボードで移動できます(左、右、上、下)。

値インスペクタ

値インスペクタ

  1. 上部のツールバーには、ビッグ エンディアンとリトル エンディアンを切り替え、設定を開くボタンがあります。[設定] を開いて、インスペクタでデフォルトに表示する値の型を選択します。 ツールバー ボタン
  2. メインエリアには、設定に基づくすべての値の解釈が表示されます。デフォルトではすべて表示されます。
  3. エンコードはクリック可能です。整数の場合は dec、hex、oct、浮動小数点数の場合は sci、dec を切り替えることができます。 エンコード スイッチ

メモリの検査

一緒にメモリを調べてみましょう。

  1. 以下の手順に沿ってデバッグを開始します。
  2. 住所入力で住所を 0x00000027 に変更します。 住所入力
  3. ASCII 表現値の解釈を確認します。現在、値はすべて空です。
  4. Pointer 32-bitPointer 64-bit の横に青い [Jump to address] ボタンが表示されます。クリックするとアドレスに移動できます。無効な住所の場合、ボタンはグレー表示され、クリックできません。 [アドレスに移動] ボタン
  5. [Resume script execution] をクリックすると、手順を順番に確認できます。スクリプト実行を再開
  6. これで [ASCII 表現] が更新されました。すべての値の解釈も更新されます。すべての値の解釈が更新されています
  7. 値インスペクタをカスタマイズして、浮動小数点のみを表示しましょう。[settings] ボタンをクリックし、[Float 32-bit] と [Float 64-bit] のみをオンにします。 設定を使用して値インスペクタをカスタマイズ
  8. エンコードを dec から sci に変更しましょう。値の表示もそれに応じて更新されます。 エンコードを変更します。
  9. キーボードまたはナビゲーション バーを使用して、メモリバッファを操作してみます。ステップ 4 を繰り返して、値の変化を確認します。

WebAssembly のメモリ検査

WebAssembly.Memory オブジェクトは、オブジェクト メモリの未加工のバイトを保持する ArrayBuffer です。[Memory Inspector] パネルでは、C++ で記述された Wasm アプリ内のそのようなオブジェクトを検査できます。

WebAssembly.Memory の検査を最大限に活用するには:

  • Chrome 107 以降を使用してください。chrome://version/ でバージョンをご確認ください。
  • C/C++ DevTools Support(DWARF)拡張機能をインストールします。これは、DWARF デバッグ情報を使用して C/C++ WebAssembly アプリケーションをデバッグするためのプラグインです。

オブジェクトの WebAssembly.Memory を検査するには:

  1. こちらのデモページDevTools を開きます
  2. [ソース] パネルで demo-cpp.cc を開き、main() 関数の 15 行目(x[i] = n - i - 1;)にブレークポイントを設定します。
  3. ページを再読み込みして、アプリケーションを実行します。デバッガはブレークポイントで一時停止します。
  4. [Debugger] ペインで、[Scope] > [Local] を開きます。
  5. x: int[10] 配列の横にある Memory Inspector で表示。 アイコンをクリックします。

    または、配列を右クリックして [Reveal in Memory Inspector パネル] を選択します。

Memory Inspector で開かれた x 配列

オブジェクト メモリのハイライト表示を停止するには、[Memory Inspector] パネルでオブジェクト バッジにカーソルを合わせて x ボタンをクリックします。

オブジェクト メモリのハイライト表示を停止します。

詳しくは、次をご覧ください。