Что означают разные столбцы в команде windbg «! Heap -flt -s xxxx»

Я проделал некоторую работу по проблемам с высокой памятью, и я провел много анализа кучи в windbg, и мне было любопытно, что на самом деле означают разные столбцы в "! Heap -flt -" s xxxx "команда.

Я прочитал Что означают числа «размер» в выводе windbg! Heap? , и я просмотрел свою книгу «Внутреннее устройство Windows», но у меня все еще оставалась куча вопросов. Итак, столбцы и мои вопросы приведены ниже.

**HEAP_ENTRY** - What does this pointer really point to? How is it different than UserPtr?
**Size** - What does this size mean? How is it different than UserSize?
**Prev** - This just appears to be the negative offset to get to the previous heap entry. Still not sure exactly how it's used.
**Flags** - Is there any documentation on these flags?
**UserPtr** - What is the user pointer? In all cases I've seen it's always 8 bytes higher than the HEAP_ENTRY, but I don't really know what it points to.
**UserSize** - This appears to be the size of the actual allocation.
**state** - This just tells you what state of this heap entry is (free, busy, etc....)

Example:
HEAP_ENTRY Size Prev Flags    UserPtr UserSize - state
  0015eeb0 0044 0000  [07]   0015eeb8    00204 - (busy)

19
задан Community 23 May 2017 в 12:32
поделиться