Понимание предупреждений UMDH

Я новичок в использовании UMDH, и у меня возникли проблемы с пониманием того, как поступить с некоторыми ошибками, которые он выводит. Я следую типичному использованию (с сайта MS):

gflags -i OCES.exe +ust

В другом окне терминала:

OCES.exe

А затем обратно в исходное окно терминала:

umdh -p:5712 -f:out1.txt

Но я получаю следующие предупреждения от UMDH

Warning:
Warning: UMDH didn't find any allocations that have stacks collected.
Warning: Use gflags to enable allocation stack collection.
Warning: Restart the application for the setting to be in effect.
Warning: A 32bit GFLAGS must be used. The command is:
Warning: gflags -i OCES.exe +ust
Warning:

Когда я делаю второй вызов UMDH, я получаю ту же ошибку, и когда я использую UMDH для сравнения двух снимков, я не получаю никакого полезного вывода (без стеков или обратных трасс). Я использовал UMDH на другом компьютере и не испытывал этих проблем (другой компьютер больше не доступен для моего использования).

Установка UMDH происходит из 32-разрядной версии коллекции "Средства отладки для Windows", я использую 32-разрядную версию WinXP Professional, и мое программное обеспечение находится на C++ с использованием Visual Studio 2008.

Я провел поиск по этим предупреждениям и не нашел в них ничего полезного. Любая помощь приветствуется.

3 ответа

@Steve - я немного переместил тему из OCES.exe (нашего сетевого движка) в наше основное приложение, но я получаю те же предупреждения (подробности об основном основном приложении см. В следующем ниже). OCES.exe, он просто добавляет другой код). Есть выход в out1.txt как следующее:

22 bytes + 1E at 151EA0 by BackTrace0
28 bytes + 18 at 151EE0 by BackTrace0
2D8 bytes + 18 at 151F20 by BackTrace0
314 bytes + 1C at 152210 by BackTrace0
314 bytes + 1C at 152540 by BackTrace0

Это немного отличается от некоторых выводов, которые я получил на моем предыдущем компьютере:

C0 bytes + 18 at 154B88 by BackTraceB
    7C96EED2
    7C94B394
    7C918F21
    7C91F661
    7C91F225
    7C91EF58
    7C91ED13
    7C915BAA
    7C91D129

Итак, я предполагаю, что мне не хватает этой информации трассировки стека из out1.txt, Интересно, имеет ли gflags некоторую ограниченную область влияния на исполняемые файлы?

Запустите приложение gflags и перейдите на вкладку "Файл изображения". Введите название процесса и нажмите Tab. Теперь увеличьте значение в "Backtrace Stack (Megs)", например, до 64 или даже 128. По умолчанию это значение составляет 32Megs, насколько я знаю, и для многократного выделения стека это может быть легко превышено.

Из описания не ясно, сделали ли вы это, но вы должны перезапустить процесс после установки +ust флаг для этого.

Сравнение не будет выполнено до тех пор, пока вы не избавитесь от предупреждений о выполнении снимка.

РЕДАКТИРОВАТЬ:

В этой статье указывается, что если символы не настроены правильно для ntdll.dll, инструмент не будет работать. Не могли бы вы проверить это?

Проблемы, с которыми вы можете столкнуться при использовании UMDH

Наиболее распространенные ошибки при использовании UMDH возникают потому, что трассировка стека не включена. Кроме того, неправильные символы для Ntdll.dll препятствуют запуску UMDH. Для других файлов символов выполняется UMDH, но файл журнала содержит трассировки стека, которые не имеют имен функций, но вместо этого имеют относительные адреса внутри модулей. Далекая третья ошибка указывает неправильный PID.

Другие вопросы по тегам