.m[struct][link] [expression [L count]]
Displays information about memory and memory objects.
a | Display arena record. |
c | Display context descriptor |
d | Display page directory entry |
e | Toggle stopping in the debugger for memory manager errors (parameter validation errors as well as fatal errors). |
f | With no arguments, dump page fault log. With arguments, set to log faults in a specific range (syntax: .MF <address> L<lengh in bytes>). |
fb | Toggle stopping for each logged page fault. |
ff | Toggle logging page faults to debug terminal. |
g | Display pager descriptor |
h [handle] | Displays heap information for the given handle or global information if no handle is given. Displays heap information. This was originally intended for debugging the VMM's memory manager, but may be useful for looking at heap allocations that a device driver makes. This command accepts an optional parameter that specifies the heap allocation handle whose information should be dumped. |
hs [handle] | Dump statistics about a given heap. |
hw | Toggle paranoid VMM32 heap checking. |
hx [handle] | Check for corruption on given heap defaults to VMM32 fixed heap. |
i | Display Instance Data information. The first section lists which pages of V86 memory contain instance data. The second section lists the regions of instance data. A typical entry looks like:
VMAddr 00000413, Lead Byt 01, Algn Byt 29 This means that the instance region starts at 413h in V86 memory, that 1 byte exists before a DWORD boundary and 29h bytes exist after a DWORD boundary, for a total region length of 2Ah bytes. This command is useful for determining if a device has claimed instance data properly, or to just see what data is currently instanced. |
l | Display (physical) page table info for a given linear address |
m [address [l page-count]] | Attempts to force memory present. The address defaults to last page faulted upon (contents of cr2 register). |
n | Force all unlocked memory not present |
p | Display ALL Linear addresses that map the given PhysAddr. This command requires a physical address, so page A0h would be address A0000. |
r | Display arena header |
s | Dumps global memory manager statistics such as how system memory is being used, what sort of pager is being used etc. |
t | Displays page table entry |
u | Toggles computing checksums for page-outs and page-ins |
v | Displays memory handle information for the memory handles that are allocated to the current VM. Originally used in debugging the VMM's memory manager. Also dumps out the list of routines that have used the global _Assign_Device_v86_Pages service. |
w | Dumps allocators of all committed pages. |
x | Displays all memory structures for an address. |
y | Displays valid physical memory ranges. |
If no letter is given, the command displays all the structures associated with a given linear address.
The default address for the .m and .mx commands is the contents of the cr2 register (the last page fault) and for the other commands it is the first structure in the list. For example, .m displays information about the page that most recently faulted.
A word of caution about the .mm, .mhx, and .mhs commands. If you invoke these commands at the wrong time, you can crash your system. The only time it can be guaranteed safe is if you are currently executing ring 3 code. At other times we may be in the middle of another file system or memory manager operation.