次の方法で共有


Visual Studio デバッガーでメモリ ウィンドウを使用する (C#、C++、Visual Basic、F#)

デバッグ中に、[ メモリ ] ウィンドウにアプリが使用しているメモリ領域が表示されます。

[ウォッチ]、[自動変数]、[ローカル]、[クイック ウォッチ] ダイアログなどのデバッガー ウィンドウには、メモリ内の特定の場所に格納されている変数が表示されます。 [ メモリ ] ウィンドウに全体像が表示されます。 メモリ ビューは、他のウィンドウにうまく表示されない大きなデータ (バッファーや大きな文字列など) を調べるのに便利です。

[メモリ] ウィンドウは、データの表示に限定されません。 割り当てられていないメモリ内のデータ、コード、不要なビットなどを含むメモリ空間内のすべてを表示します。

[ メモリ ] ウィンドウは、スクリプトまたは SQL デバッグでは使用できません。 これらの言語はメモリの概念を認識しません。

メモリ ウィンドウを開く

他のデバッガー ウィンドウと同様に、 メモリ ウィンドウはデバッグ セッション中にのみ使用できます。

Important

[メモリ] ウィンドウを有効にするには、[デバッグ] セクションの [ツール ] (または [デバッグ] ) >] で [アドレスレベルのデバッグを有効にする] チェック ボックスオンにする必要があります。

[メモリ] ウィンドウを開きます。

  1. [ツール] (または [デバッグ] >Options) ウィンドウを開き>Debugging>General] セクションを展開し、[アドレスレベルのデバッグを有効にする] チェック ボックスをオンにします。
  1. [ツール] (または [デバッグ] >Options) ダイアログを開き、[デバッグ>General] セクションを展開し、[アドレスレベルのデバッグを有効にする] チェック ボックスをオンにします。
  1. 緑色の矢印を選択するか、F5 キーを押すか、>デバッグの開始を選択して、デバッグを開始します。

  2. [デバッグ>Windows>メモリ] で、[メモリ 1]、[メモリ 2]、[メモリ 3]、または [メモリ 4] を選択します。 (Visual Studio の一部のエディションでは、 メモリ ウィンドウが 1 つだけ提供されます)。

複数のウィンドウを使用すると、メモリ空間内のさまざまな領域のビューを同時に維持できます。

[メモリ] ウィンドウ内を移動する

コンピューターのアドレス空間が大きいため、[ メモリ ] ウィンドウをスクロールすると簡単に場所が失われる可能性があります。

ウィンドウの下部に高いメモリ アドレスが表示されます。 上位のアドレスを表示するには、下にスクロールします。 下のアドレスを表示するには、上にスクロールします。

ほとんどのシナリオでは、特定のメモリ位置を検索する必要があります。

メモリの場所を検索する

ドラッグ アンド ドロップを使用するか、[アドレス] フィールドにアドレスを入力して、[メモリ] ウィンドウで指定したアドレスにすぐに移動できます。 [アドレス] フィールドは、英数字アドレスと、アドレスに評価される式 (e.User.NonroamableIdなど) を受け入れます。

[アドレス] フィールドで式の即時再評価を強制するには、丸め矢印の [自動再評価] アイコンを選択します。

既定では、[ メモリ ] ウィンドウは Address 式をライブ式として扱います。これは、アプリの実行時に再評価されます。 ライブ式は、たとえばポインター変数によって操作されるメモリを表示する場合に便利です。

ドラッグ アンド ドロップを使用してメモリの場所に移動します。

  1. デバッガー ウィンドウで、メモリ アドレス、またはメモリ アドレスを含むポインター変数を選択します。

  2. アドレスまたはポインターを [メモリ ] ウィンドウにドラッグ アンド ドロップします。

    そのアドレスが [アドレス] フィールドに表示され、[ メモリ ] ウィンドウが調整され、そのアドレスが上部に表示されます。

メモリの場所に移動する場所を [アドレス] フィールドに入力します。

  • [ 住所] フィールド に住所または式を入力するか貼り付けて Enter キーを押すか、[ 住所 ] フィールドのドロップダウンから選択します。

    そのアドレスが [アドレス] フィールドに表示され、[ メモリ ] ウィンドウが調整され、そのアドレスが上部に表示されます。

    [メモリ] ウィンドウのスクリーンショット。

[メモリ] ウィンドウをカスタマイズする

既定では、メモリの内容は 16 進数形式で 1 バイトの整数として表示され、ウィンドウの幅によって表示される列の数が決まります。 [メモリ] ウィンドウでメモリの内容を表示する方法をカスタマイズできます。

メモリの内容の形式を変更します。

  • [メモリ] ウィンドウを右クリックし、コンテキスト メニューから目的の形式を選択します。

[メモリ] ウィンドウの列数を変更します。

  • [ 列] フィールドの横にあるドロップダウン矢印を選択し、表示する列の数を選択するか、[ 自動 ] を選択してウィンドウの幅に基づいて自動調整します。

アプリの実行時に [メモリ ] ウィンドウの内容を変更しない場合は、ライブ式の評価をオフにすることができます。

ライブ評価の切り替え:

  • [メモリ] ウィンドウで右クリックし、コンテキスト メニューの [自動的に再評価] を選択します。

    ライブ式評価は、既定ではオンになっているトグル機能であるため、(自動で再評価する)を選択すると手動でオフになります。 [ 自動再評価 ] を選択すると、再び有効になります。

[メモリ] ウィンドウの上部にあるツール バーを非表示または表示できます。 ツール バーが非表示の場合、 アドレス フィールドやその他のツールにアクセスすることはできません。

ツール バーの表示を切り替えます。

  • [メモリ] ウィンドウで右クリックし、コンテキスト メニューの [ツール バーの表示] を選択します。 ツール バーは、前の状態に応じて表示または非表示になります。

メモリを介してポインターに従う (C/C++)

ネイティブ コード アプリでは、レジスタ名をライブ式として使用できます。 たとえば、スタック ポインターを使用してスタックに従うことができます。

メモリを介してポインターに従います。

  1. [ メモリ ] ウィンドウの [アドレス] フィールドに、現在のスコープ内にあるポインター式を入力します。 言語によっては、デリファレンスが必要になる場合があります。

  2. Enter キーを押します。

    Step などのデバッグ コマンドを使用すると、[アドレス] フィールドと [メモリ] ウィンドウの上部に表示されるメモリ アドレスは、ポインターが変更されると自動的に変更されます。

メモリ ポインターの表示 (.NET)

ヒープ スナップショットから取得したアドレスなど、メモリ ポインターに基づいて .NET オブジェクトの内容を表示する場合は、{CLR}@Address表記を使用してこれを行うことができます。 アドレスは、0x1D102A581B0などのメモリへのポインターである必要があります。 [メモリ] ウィンドウの {CLR}@Address フィールドに、表記を使用してメモリ ポインターを入力します。 または、同じ表記を使用して、[ ウォッチ] ウィンドウを使用してウォッチを追加することもできます。

ヒープ スナップショットからメモリ ポインター アドレスを取得するには、ヒープ ダンプを開き、[ マネージド メモリのデバッグ] を選択すると、 メモリ使用量 ツールが開きます。 目的のオブジェクトを右クリックし、[ インスタンスの表示] を選択します。