Debugging Tools for Windows

!vpdd

!vpdd扩展显示指定进程的物理地址、虚拟地址和内存内容。

语法

!vpdd Process VirtualAddress 
!vpdd PID VirtualAddress 

参数

Process
指定要显示内存的进程的地址。
PID
指定要显示内存的进程的PID(process ID)。
VirtualAddress
指定要查看的页面的虚拟地址。

DLL

Windows NT 4.0 Kdextx86.dll
Windows 2000 不可用
Windows XP和之后 不可用

注释

下面是一个示例。假设要查看cmd.exe进程保存在虚拟地址0x4AD00000处的内存内容。首先使用!process来查看进程地址:

kd> !process 0 0
.......
PROCESS 810e0020  SessionId: 0  Cid: 04e4    Peb: 7ffdf000  ParentCid: 014c
    DirBase: 0268a000  ObjectTable: 810db008  TableSize:  22.
    Image: CMD.EXE

!vpdd的首个参数可以使用进程地址(0x810E0020)或者PID(0x4E4)。第二个参数是要显示的虚拟地址:

kd> !vpdd  810e0020 4ad00000
00fcf000 4ad00000  00905a4d 00000003 00000004 0000ffff
00fcf010 4ad00010  000000b8 00000000 00000040 00000000
00fcf020 4ad00020  00000000 00000000 00000000 00000000
00fcf030 4ad00030  00000000 00000000 00000000 000000d0
00fcf040 4ad00040  0eba1f0e cd09b400 4c01b821 685421cd
00fcf050 4ad00050  70207369 72676f72 63206d61 6f6e6e61
00fcf060 4ad00060  65622074 6e757220 206e6920 20534f44
00fcf070 4ad00070  65646f6d 0a0d0d2e 00000024 00000000

输出中,第一列是物理地址,第二列是虚拟地址。每行中剩下的内容是该位置保存的内容,以DWORD的形式。

附加信息

相关主题,查看!vtop!ptov、以及将虚拟地址转换成物理地址。关于页表和页目录的信息,查看 Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

Build machine: CAPEBUILD