Понимание предупреждений UMDH - PullRequest
0 голосов
/ 20 октября 2010

Я новичок в использовании 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 ]

1 голос
/ 14 марта 2011

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

0 голосов
/ 20 октября 2010

@ Стив - я немного переместил тему из 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 ограниченную область действия на исполняемые файлы?

0 голосов
/ 20 октября 2010

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

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

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

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

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

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

...