次の方法で共有


仮想アドレスによるメモリへのアクセス

メモリ アドレスまたはアドレス範囲にアクセスするには、いくつかのコマンドを使用できます。 Visual Studio と WinDbg には、メモリの表示と編集に使用できるユーザー インターフェイス要素 (およびコマンド) が用意されています。 詳細については、「 WinDbg (クラシック) でのメモリの表示と編集」を参照してください。

次のコマンドは、さまざまな形式でメモリの読み取りまたは書き込みを行うことができます。 これらの形式には、16 進数バイト、単語 (単語、二重ワード、クワッド ワード)、整数 (短整数、長整数、およびクワッド整数と符号なし整数)、浮動小数点数 (10 バイト、16 バイト、32 バイト、64 バイトの実数)、ASCII 文字が含まれます。

  • d* (Display Memory) コマンドは、指定されたメモリ アドレスまたは範囲の内容を表示します。

  • e* (値の入力) コマンドは、指定されたメモリ アドレスに値を書き込みます。

次のコマンドを使用して、より特殊なデータ型を処理できます。

  • dt (表示タイプ) コマンドは、さまざまなデータ型を検索し、デバッグ中のアプリケーションによって作成されたデータ構造を表示します。 このコマンドは非常に汎用性が高く、多くのバリエーションとオプションがあります。

  • ds, dS (Display String) コマンドは、STRING、ANSI_STRING、またはUNICODE_STRINGデータ構造を表示します。

  • dl (リンクリストの表示) コマンドは、リンクリストをトレースして表示します。

  • d*s (単語と記号の表示) コマンドは、シンボル情報を含む可能性がある二重ワードまたはクワッドワードを検索し、データとシンボル情報を表示します。

  • !address 拡張コマンドは、特定のアドレスにあるメモリのプロパティに関する情報を表示します。

次のコマンドを使用してメモリ範囲を操作できます。

  • m (メモリ移動) コマンドは、あるメモリ範囲の内容を別のメモリ範囲に移動します。

  • f (Fill Memory) コマンドは、メモリ範囲にパターンを書き込み、その範囲がいっぱいになるまで繰り返します。

  • c (メモリ比較) コマンドは、2 つのメモリ範囲の内容を比較します。

  • s (メモリ検索) コマンドは、メモリ範囲内で指定されたパターンを検索するか、メモリ範囲内に存在する ASCII または Unicode 文字を検索します。

  • .holdmem (Hold and Compare Memory) コマンドは、1 つのメモリ範囲を別のメモリ範囲と比較します。

ほとんどの場合、これらのコマンドは現在の基数のパラメーターを解釈します。 したがって、現在の基数が 16 でない場合は、16 進数のアドレスの前に 0x を追加する必要があります。 ただし、これらのコマンドの表示出力は、現在の基数に関係なく、通常は 16 進数形式です。 (出力の詳細については、個々のコマンド トピックを参照してください)。[ メモリ] ウィンドウ には、整数と実数が 10 進形式で表示され、他の形式が 16 進数形式で表示されます。

既定の基数を変更するには、 n (数値ベースの設定) コマンドを使用します。 あるベースから別のベースに数値をすばやく変換するには、 ?(式の評価) コマンドまたは .formats (数値形式の表示) コマンドを選択します。

ユーザー モード デバッグを実行する場合、仮想アドレスの意味は現在のプロセスによって決まります。 カーネル モード デバッグを実行する場合は、デバッガーによって仮想アドレスの意味を制御できます。 詳細については、「 プロセス コンテキスト」を参照してください。