Разобрать аварийный дамп в WinDbg на наличие частных байтов (кроме управляемой кучи)?

Я хочу проанализировать файл полного аварийного дампа (*.dmp) и получить данные частных байтов. Я знаю, что VMMap SysInternals может сказать мне, сколько моих личных байтов, кучи и т. д., но мне нужно, если у меня есть дамп, я должен быть в состоянии проанализировать его и получить структуру кучи (управляемой кучи) и данные в куча. Я уже закончил с этим, прочитав PEB, а затем пройдясь по кучам.

Чего я не могу понять, так это того, как читать частные байты (кроме кучи, которая должна быть данными процесса для собственного кода). Может ли кто-нибудь указать мне правильное направление, чтобы я мог анализировать частные байты, кроме кучи, из аварийного дампа.

Спасибо.


person arb    schedule 03.02.2011    source источник
comment
Можете уточнить свой вопрос? Вы должны иметь доступ к любому месту в памяти, сохраненному дампом с помощью обычных команд (x, dX, s и т. д.) после его загрузки.   -  person aaron    schedule 08.05.2011


Ответы (1)


!address -summary

В первом разделе вы получите разбивку использования:

--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                    170          6f958000 (   1.743 Gb)           87.18%
<unknown>                               477           6998000 ( 105.594 Mb)  40.21%    5.16%
Stack                                   417           5d00000 (  93.000 Mb)  35.42%    4.54%
Image                                   253           3970000 (  57.438 Mb)  21.87%    2.80%
Heap                                     20            600000 (   6.000 Mb)   2.28%    0.29%
TEB                                      93             5d000 ( 372.000 kb)   0.14%    0.02%
Other                                     9             32000 ( 200.000 kb)   0.07%    0.01%
PEB                                       1              1000 (   4.000 kb)   0.00%    0.00%

Неизвестными будут виртуальные аллоки.

Чтобы получить список неизвестных областей памяти, вы можете запустить:

!address -f:VAR

VAR, как определено в файле debugger.chm — Занятые регионы. Эти регионы включают в себя все блоки виртуального распределения, кучу SBH, память из пользовательских распределителей и все другие регионы адресного пространства, которые не подпадают ни под одну другую классификацию.

person JasonE    schedule 13.12.2011
comment
Как только я сделаю !address -f:VAR, что дальше? Я просто получаю кучу адресов памяти. Как лучше всего их понять? - person Mark; 26.01.2012
comment
Обратите внимание, что в разделе Сводка по использованию элемент ‹неизвестно также включает резервирования (которые учитываются в счетчике виртуальных байтов). Вместо этого частные байты будут близки к MEM_COMMIT в Сводке состояний минус MEM_IMAGE в Сводке типов. - person White hawk; 28.03.2019