Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С течением времени можно несколько раз генерировать журналы User-Mode Dump Heap (UMDH) для одного и того же процесса. Затем можно использовать UMDH, чтобы сравнить журналы и определить, какие выделения стека вызовов выросли чаще всего между пробными версиями.
Например, следующая команда направляет UMDH для сравнения двух журналов UMDH, Log1.txt и Log2.txt, а также перенаправляет выходные данные в третий файл, Compare.txt.
umdh -v Log1.txt Log2.txt > Compare.txt
Результирующий файл Compare.txt перечисляет стеки вызовов, записанные в каждом журнале, а для каждого стека показывает изменения в распределении памяти кучи между файлами журнала.
Например, следующая строка из файла показывает изменение размера выделения функций в стеке вызовов с меткой Backtrace00053.
В Log1.txtвызовы в стеке составляют 40 432 (0x9DF0) байтов, но в Log2.txtтот же стек вызовов составляет 61 712 (0xF110) байтов, что на 21 280 (0x5320) байтов больше.
+ 5320 (f110 - 9df0) 3a allocs BackTrace00053
Total increase == 5320
Ниже приведен стек выделения:
ntdll!RtlDebugAllocateHeap+0x000000FD
ntdll!RtlAllocateHeapSlowly+0x0000005A
ntdll!RtlAllocateHeap+0x00000808
MyApp!_heap_alloc_base+0x00000069
MyApp!_heap_alloc_dbg+0x000001A2
MyApp!_nh_malloc_dbg+0x00000023
MyApp!_nh_malloc+0x00000016
MyApp!operator new+0x0000000E
MyApp!LeakyFunc+0x0000001E
MyApp!main+0x0000002C
MyApp!mainCRTStartup+0x000000FC
KERNEL32!BaseProcessStart+0x0000003D
Проверка стека вызовов показывает, что функция LeakyFunc выделяет память с помощью библиотеки времени выполнения Visual C++. Если проверка других файлов журнала показывает, что выделение увеличивается со временем, можно заключить, что память, выделенная из кучи, не освобождается.
Файлы символов для анализа файла журнала
Предположим, у вас есть два компьютера: компьютер ведения журнала , в котором создается журнал UMDH и компьютер анализа , в котором анализируется журнал UMDH. Путь к символам на компьютере анализа должен указывать на символы для версии Windows, загруженной на компьютер ведения журнала во время создания журнала. Не указывайте путь к символам на компьютере, на котором проводится анализ, на сервер символов. Если это сделать, UMDH получит символы для версии Windows, работающей на компьютере анализа, и UMDH не будет отображать значимые результаты.