Запустите и Проследите Новый Процесс

Когда Вы запускаете приложение от VMMap, приложение инструментуется, чтобы отследить все отдельные выделения памяти наряду со связанным стеком вызова. Введите путь к приложению и дополнительно любым параметрам командной строки и каталогу запуска как показано в рисунке 7-3, и затем нажмите OK.

 

Рис. 7-3. Запустите и проследите новый процесс.

VMMap вводит DLL в целевой процесс при запуске и прерывает его вызовы API виртуальной памяти. Наряду с типом выделения, размером, и защитой памяти, VMMap получает стек вызова в точке, когда выделение делается. VMMap агрегировал эту информацию различными способами, которые описываются в "Выделениях просмотра от Инструментованных Процессов", разделяют позже в этой главе. (См. "Стеки вызова и Символы" в Главе 2, "Windows Core Components," для получения дополнительной информации.)

На x64 выпусках Windows VMMap может инструментовать и проследить x86 и x64 программы, запуская 32-разрядную или 64-разрядную версию себя соответственно. Однако, на x64 Windows VMMap не может инструментовать и проследить программы СЕТИ, созданные для "Любого ЦП.. Это может инструментовать те ­программы на 32-разрядных версиях Windows, и можно проанализировать "Любой ЦП" программа на x64 без инструментария, выбирая это от вкладки View A Running Process диалогового окна Процесса Выбора или Запуска.

Отметьте, что "Любой ЦП" является целевой архитектурой по умолчанию для Microsoft C# и приложений СЕТИ Visual Basic, созданных с Microsoft Visual Studio 2005 и более новый.

Окно VMMap

После того, как Вы выбираете или запускаете процесс, VMMap анализирует процесс, выводя на экран графические изображения виртуальной памяти и физической памяти, и табличной Сводки и Представлений Деталей. Типы памяти - цвет, кодированный в каждом из этих компонентов со Сводным Представлением, также служащим цветным ключом.

 

Первая гистограмма в окне VMMap (показанный в рисунке 7-1) является Фиксировавшей сводкой.

Его по-другому цветные области показывают относительные пропорции различных типов фиксировавшей памяти в пределах адресного пространства процесса. Это также служит основанием, против которого масштабируются другие два графика. Полное число, показанное выше правого края графика, не является всей выделенной памятью, но "доступной" памятью процесса. К областям, которые были только зарезервированы, еще нельзя получить доступ и не включаются в этот график. Другими словами память, включенная здесь, поддерживается RAM, файлом оповещения, или отображенным файлом.

Вторая гистограмма в окне VMMap - Частная сводка Байтов. Это - память процесса, не общая с другими процессами, и это поддерживается физической RAM или файлом оповещения. Это включает стек, "кучу", необработанную виртуальную память, таблицы страниц, и части чтения-записи отображений файла и изображения. Метка выше правой стороны графика сообщает о полном размере частной памяти процесса. Цветные области в гистограмме показывают пропорции различных типов выделений памяти, способствующих частному использованию байта. Степень цветных областей к правому краю графика указывает на свою пропорцию к виртуальной памяти в использовании.

Третья гистограмма показывает набор работы для процесса. Набор работы - виртуальная память процесса, которая является резидентным объектом в физической RAM. Как Частный график Байтов, цветные области показывают относительные пропорции различных типов выделений в RAM, и их степень к праву указывает на пропорцию фиксировавшей виртуальной памяти процесса, которая является резидентным объектом в RAM.

Отметьте, что эти графики показывают только относительные пропорции различных типов выделения. Они не карты расположения, которые показывают, где в памяти они выделяются. Диалоговое окно Фрагментации Адресного пространства, описанное позже в этой главе, обеспечивает такую карту для 32-разрядных процессов.

Ниже этих трех графиков Сводная таблица Представления приводит различные типы выделений памяти (описанный в "разделе" Типов Памяти в этой главе), общая сумма каждого типа выделения, сколько фиксируется, и сколько находится в физической RAM. Выбор память вводит Сводное Представление, чтобы фильтровать то, что показывают в окне Представления Деталей. Можно сортировать Сводную таблицу Представления значениями в любом столбце, щелкая по соответствующему заголовку столбца. Щелчок по заголовку столбца снова инвертирует порядок сортировки для того столбца. Порядок цветных областей в гистограммах VMMap следует за порядком сортировки Сводной таблицы Представления. Можно также изменить порядка следования столбцов для этой таблицы, перетаскивая заголовок столбца к новой позиции, и изменить размеры ширин столбцов, перетаскивая границы между заголовками столбца.

Ниже Сводного Представления Представление Деталей выводит на экран информацию о каждой области памяти виртуального адресного пространства пользовательского режима процесса. Чтобы показать только одно выделение вводят Представление Деталей, выбирают, которые вводят Сводное Представление. Чтобы просмотреть все выделения памяти, выберите Строку итогов в Сводном Представлении. Как со Сводным Представлением, столбцы в Представлении Деталей позволяют сортировать, изменяя размеры и переупорядочивая.

 

Выделения, показанные в Представлении Деталей, могут расшириться, чтобы показать подблоки в пределах исходного выделения. Это может произойти, например, когда большой блок памяти резервируется, и затем части этого фиксируются. Также происходит, когда загрузчик изображения или приложение создают отображение файла и затем создают многократные отображенные представления того отображения файла; например, чтобы установить защиту по-другому на различных областях отображения файла. Можно развернуть или свернуть отдельные группы подвыделений, щелкая плюс (+) и минус (-) значки в Представлении Деталей. Можно также расшириться или выйти из строя, все они выбором Разворачивают Все или Коллапс Все от меню опций. Верхний ряд такой группы показывает суммы отдельных компонентов в пределах этого. Когда различный порядок сортировки выбирается для Представления Деталей, подблоки остаются с их высокоуровневыми строками и сортируются в пределах той группы.

Если шрифт VMMAP по умолчанию не к Вашей симпатии, выберите Опции | Шрифт, чтобы выбрать различный шрифт для Сводного Представления, Представления Деталей, и некоторые из диалоговых окон VMMAP.

Типы памяти

VMMap категоризирует выделения памяти в один из нескольких типов:

■                Изображение. Память представляет исполняемый файл, такой как EXE или DLL, который был загружен в процесс загрузчиком изображения. Отметьте, что Видеопамять не включает исполняемые файлы, загруженные как файлы с данными — они включаются в Отображенный тип памяти Файла. Исполнимые области кода обычно read/execute-only и общие. Области данных, такие как инициализируемые данные, обычно являются чтением-записью или копией на записи. Когда страницы копии на записи изменяются, дополнительная частная память создается в процессе и отмечается как чтение-запись. Эта частная память поддерживается RAM или файлом оповещения а не файлом изображения. Столбец Details в Представлении Деталей показывает путь файла или имя раздела.

■                Отображенный Файл. Память является общей и представляет файл на диске. Отображенные файлы часто - DLL ресурса и обычно содержат данные приложения. Столбец Details показывает путь файла.

■                Общий. Совместно используемая память - память, которая может быть совместно использована с другими процессами и поддерживается RAM или файлом оповещения (если есть). Совместно используемая память обычно содержит данные, совместно использованные процессами через DLL совместно использованные разделы или через поддержанный файлом подкачки, отображающие файл объекты (также известный как поддержанные файлом подкачки разделы).

■                "Куча". "Куча" представляет частную память, выделенную и управляемую менеджером по "куче" пользовательского режима, и обычно содержит данные приложения. Выделения памяти приложения, которые используют память "Кучи", включают время выполнения C malloc библиотека, C++ новый оператор, API Windows Heap, и наследство API LocalAlloc и GlobalAlloc.

■                Управляемая Управляемая "Куча". "Куча" представляет частную память, которая выделяется и управляется временем выполнения СЕТИ и обычно содержит данные приложения.

 

■                Стек. Стековая память выделяется каждому потоку в процессе, чтобы сохранить параметры функции, локальные переменные, и записи вызова. Как правило, установленная сумма Стековой памяти выделяется и резервируется, когда поток создается, но только относительно небольшое количество фиксируется. Объем памяти, фиксировавший в пределах того выделения, вырастет как необходимый, но это не будет уменьшаться. Стековая память освобождается, когда ее поток выходит.

■                Частные Данные. Частная память Данных - память, которая выделяется VirtualAlloc, и это далее не обрабатывается менеджером по "Куче" или временем выполнения СЕТИ, или присваивается категории Стека. Частная память Данных обычно содержит данные приложения, так же как Блоки Среды Процесса и Потока. Частная память Данных не может быть совместно использована с другими процессами.

Отметьте, что определение VMMAP "Частных Данных" более гранулировано чем тот из Проводника Процесса "частные байты." "Частные байты Просекспа" включают всю частную переданную память, принадлежащую процессу.

■                Таблица страниц. Память Таблицы страниц - частная память режима ядра, связанная с таблицами страниц процесса. Отметьте, что память Таблицы страниц никогда не выводится на экран в Представлении Деталей VMMAP, которое показывает только память пользовательского режима.

■                Свободный. Свободные области памяти - места в виртуальном адресном пространстве процесса, которые не выделяются. Чтобы включать свободные области памяти в Представление Деталей, осматривая карту общей памяти процесса, выберите Опции | Шоу Свободные Области.

Информация о памяти

Сводное Представление и Представление Деталей показывают следующую информацию для типов выделения и ­отдельных выделений. Чтобы уменьшить шум в выводе, VMMap не показывает записи, у которых есть значение 0.

■                Размер. Полный размер выделенного типа или области. Это включает области, которые были зарезервированы, но не фиксировались.

■                Фиксировавший. Количество выделения, которое фиксируется — то есть, поддержанный RAM, файлом оповещения, или отображенным файлом.

■                Частный. Количество выделения, которое является частным к процессу.

■                Полный WS. Общая сумма рабочего набора (физическая память), присвоенная типу или области.

■                Частный WS. Количество рабочего набора, присвоенного типу или области, которая не может быть совместно использована с другими процессами.

■                Общий WS. Количество рабочего набора, присвоенного типу или области, которая может быть совместно использована с другими процессами.

 

■                Совместно используемый WS. Количество Общего WS, который в настоящий момент совместно используется с другими процессами.

■                Заблокированный WS. Объем памяти, который, как гарантировали, останется в физической памяти и не подвергнется отказу страницы когда получено доступ.

■                Блоки. Число индивидуально выделенных областей памяти.

■                Самый большой. В Сводном Представлении размер самой большой непрерывной памяти блокирует для того типа выделения.

■                Адрес. В Представлении Деталей, базовом адресе области памяти в виртуальном адресном пространстве процесса.

■                Защита. В Представлении Деталей, идентифицирует типы операций, которые могут быть выполнены на памяти. В случае высокоуровневых выделений, которые показывают расширяемые подблоки, Защита идентифицирует сводку типов защиты в подблоках. Нарушение прав доступа происходит на попытке выполниться, код от области, не отмеченной, Выполняются (если DEP включается), чтобы записать в область не отмеченную Запись или Копию на записи, или получить доступ к памяти, которая отмечается как без доступа или только резервируется, но еще не фиксируется.

■                Детали. В Представлении Деталей, дополнительной информации об области памяти, такой как путь к его файлу поддержки, ID "Кучи" (для памяти "Кучи"), ID Потока (для Стековой памяти), или СЕТЬ AppDomain и поколения Набора Мусора.

Отметьте, что Виртуальные Защищают API, может изменить защиту любой страницы к чему-то другому от того набора исходным выделением памяти. Это означает, что могут потенциально быть страницы памяти, частной к процессу в области совместно используемой памяти, например, потому что область создавалась как поддержанный файлом подкачки раздел, но тогда приложение или некоторое другое программное обеспечение, измененное защита на копию на записи, и изменила страницы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: