2010-10-20 3 views
0

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

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.

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

+0

Похоже, что исполняемые gflags в том же поскольку исполняемый файл, как представляется, не дает предупреждений (в отличие от примера из MS и того, что я испытывал на моем предыдущем компьютере). Но я получаю те же предупреждения с нашим основным приложением (не OCES.exe), который возвращает управление терминал (OCES.exe не блокирует терминал). Поэтому я «предполагаю», что эффекты gflags могут иметь ограниченный объем. Существует ли лучший способ приблизиться к использованию gflags для приложения, которое освобождает управление обратно к терминальное окно? –

+0

'gflags' должно влиять на реестр. Вы можете проверить, работает ли он с помощью' gflags/i oces.exe', который сбрасывает текущие настройки. Используйте 'gflags' без параметров и вы shoul d загрузите версию GUI, вы также можете проверить и установить флаги EXE. –

+0

@Steve. Я попробую это. Если это не сработает, это может быть наше основное приложение, а не UMDH. Это довольно большая база кода с несколькими продуктами COTS, поэтому может быть что-то, что gflags недовольны. Я собираюсь попробовать другие инструменты утечки, такие как LeakDiag и DebugDiag. Спасибо за вашу помощь в получении лучшего понимания UMDH, Стив. Очень признателен! –

ответ

0

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

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

EDIT:

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

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

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

+0

Да. Вызов gflags был до вызова OCES.exe. –

+0

@Clifford - есть ли что-нибудь еще в 'out1.txt'? –

0

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

+0

См. Мое редактирование. btw - вы можете отредактировать свой собственный вопрос с большим количеством данных, если хотите. –

1

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

Смежные вопросы