Debugging Tools for Windows |
.process 命令指定要用作进程上下文的进程。
如果包含/p 并且Process为0或者省略,则禁用这样的转换。 (这种行为和.cache noforcedecodeptes一样。)
模式 | 仅内核模式 |
目标 | 活动目标、崩溃转储 |
平台 | 所有 |
一般来说,进行内核调试时,只能看到当前进程关联的用户模式地址空间。
.process 命令指示内核调试器使用指定的用户模式进程作为进程上下文。这种用法有几种作用,但是最重要的是调试器可以访问该进程的虚拟地址空间。调试器使用该进程的页表来解释所有用户模式内存地址,所以就可以读写这些内存。
.context (Set User-Mode Address Context) 命令有类似作用。但是,.context 命令将用户模式地址上下文设置为指定的页目录,而.process 命令将进程上下文设置为指定进程。在x86处理器上,.context 和.process 的作用几乎完全一样。但是在Itanium处理器上,单个进程可能拥有不止一个页目录。这时,.process 命令更加强大,因为可以启用对该进程关联的所有页目录的访问。进程上下文的更多信息,查看进程上下文。
注意 如果在进行活动调试,需要使用/i或/p参数。如果不使用它们之一,则不能正确显示用户模式或会话的内存。
/i 参数激活目标进程。使用该选项时,必须执行目标一次以使得命令起作用。如果再次执行,则进程上下文又会丢失。
/p 参数启用forcedecodeuser 设置。(如果forcedecodeuser 选项已经激活,则不需要 /p。) 进程上下文和forcedecodeuser 状态只在目标再次运行起来之前保持。
如果调试崩溃转储, /i 和/p 选项不能使用。不管如何,不能访问当崩溃发生时被换页到磁盘上的用户模式进程虚拟内存的任何部分。
如果想使用内核调试器在用户空间设置断点,使用/i选项来将目标切换到正确的进程上下文。
下面的例子说明了如何使用!process扩展命令来查找需要的进程的 EPROCESS 块地址。
**** NT ACTIVE PROCESS DUMP ****
PROCESS fe5039e0 SessionId: 0 Cid: 0008 Peb: 00000000 ParentCid: 0000
DirBase: 00030000 ObjectTable: fe529b68 TableSize: 50.
Image: System
.....
PROCESS fe3c0d60 SessionId: 0 Cid: 0208 Peb: 7ffdf000 ParentCid: 00d4
DirBase: 0011f000 ObjectTable: fe3d0f48 TableSize: 30.
Image: regsvc.exe
下面的.process 命令使用该进程的地址。
Implicit process is now fe3c0d60
注意该命令使得不再需要.context 命令。用户模式地址上下文已经是需要的值了。
User-mode page directory base is 11f000
这个值使得可以以各种方式察看内存空间。例如,下面是一个!peb 扩展命令的示例。
PEB at 7FFDF000
InheritedAddressSpace: No
ReadImageFileExecOptions: No
BeingDebugged: No
ImageBaseAddress: 01000000
Ldr.Initialized: Yes
Ldr.InInitializationOrderModuleList: 71f40 . 77f68
Ldr.InLoadOrderModuleList: 71ec0 . 77f58
Ldr.InMemoryOrderModuleList: 71ec8 . 77f60
01000000 C:\WINNT\system32\regsvc.exe
77F80000 C:\WINNT\System32\ntdll.dll
77DB0000 C:\WINNT\system32\ADVAPI32.dll
77E80000 C:\WINNT\system32\KERNEL32.DLL
77D40000 C:\WINNT\system32\RPCRT4.DLL
77BE0000 C:\WINNT\system32\secur32.dll
SubSystemData: 0
ProcessHeap: 70000
ProcessParameters: 20000
WindowTitle: 'C:\WINNT\system32\regsvc.exe'
ImageFile: 'C:\WINNT\system32\regsvc.exe'
CommandLine: 'C:\WINNT\system32\regsvc.exe'
DllPath: 'C:\WINNT\system32;.;C:\WINNT\System32;C:\WINNT\system;C:\WINNT;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\PROGRA~1\COMMON~1\AUTODE~1'
Environment: 0x10000
关于进程上下文和其他上下文设置的更多信息,查看改变上下文。