Операционная система Microsoft Windows 3.1 для программиста -том 3


Утилита HEAPWALK


В составе SDK имеется утилита HEAPWALK , с помощью которой вы можете выполнить анализ содержимого глобальной области памяти. Для любого модуля, загруженного в память (приложения или библиотеки DLL) эта утилита показывает адреса, идентификаторы, размеры и атрибуты блоков памяти. С помощью этой утилиты вы можете проследить за тем, как ваше приложение работает с глобальной областью памяти. Вы можете обнаружить в отлаживаемом приложении часто встречающуюся ошибку, когда оно (приложение) не освобождает полученные им блоки памяти.

Главное окно утилиты HEAPWALK представлено на рис. 2.12.

Рис. 2.12. Главное окно утилиты HEAPWALK

В главном окне находится список, каждая строка которого соответствует одному блоку памяти.

В столбцах списка отображается следующая информация (все численные значения выражаются шестнадцатеричными цифрами):

Название Описание
ADDRESS Адрес блока памяти
HANDLE Идентификатор блока памяти
SIZE Размер блока памяти в байтах
LOCK Содержимое счетчика фиксирования блока памяти. Если для блока памяти запрещен страничный обмен, в этом поле есть буква "P". Если блок памяти зафиксирован и не может быть удален, он обозначается буквой "L"
FLG Если блок памяти удаляемый (discardable), в этом поле находится буква "D", если фиксированный - буква "F"
HEAP Если объект имеет локальную область памяти, в этом столбце находится буква "Y"
OWNER Имя модуля (или приложения), владеющего блоком памяти
TYPE Тип объекта (сегмент кода, сегмент данных, ресурс и т. д.)

С помощью меню "Walk" вы можете выбрать один из трех режимов просмотра глобальной области памяти, выполнить дефрагментацию памяти, запросить удаление удаляемых блоков данных и т. д.

Если в меню "Walk" выбрать строку "Walk Heap", в главном окне утилиты HEAPWALK будет отображаться информация о всех объектах, расположенных в глобальной области памяти.

Для того чтобы просмотреть все удаляемые объекты, выберите из этого меню строку "Walk LRU List".


Начало  Назад  Вперед