Что заставляет UMDH не давать трассировки стека
Я использовал UMDH дюжину раз прежде, никогда без проблем.
Внезапно я не получаю имена функций в следах стека в моих файлах дампа - просто последовательность адресов.
У меня есть только включено:
gflags exe_name + ust
Я начинаю exe_name, затем я делаю
umdh -p:pid one.txt umdh -p:pid two.txt
Я смотрю на one.txt и two.txt, и у них нет никаких признаков того, откуда они берутся. Когда я делаю различие
umdh one.txt two.txt> diff.txt
результат не полезен.
Помогите, я люблю этот инструмент.
3 ответа
UMDH выполняет связывание PDB при выполнении команды:
umdh -d one.txt two.txt -f: outputfile.txt
Не тогда, когда вы изначально делаете снимки. Вы должны позволить этому сделать разницу для вас!
И, да... вам нужно правильно настроить путь символов.
Синтаксис переключателей UMDH немного изменился где-то в последних выпусках средств отладки для окон. Возможно, это проблема. Попробуйте следующее -
umdh -p: pid ** - f: ** one.txt
umdh -p: pid ** - f: ** two.txt
umdh -v -l one.txt two.txt> diff.txt
(-l - новый переключатель, извлекающий номера файлов и строк из PDB). И снова убедитесь, что _NT_SYMBOL_PATH
Переменная окружения включает путь к вашей PDB.
Документы теперь доступны также онлайн.
(РЕДАКТИРОВАТЬ:) критический переключатель в сравнении, -v, теперь присутствует...
(РЕДАКТИРОВАТЬ:) Вы не указали свою рабочую среду. Хорошо известно, что на VC8 malloc CRT был скомпилирован с FPO - который UMDH не может преодолеть. Также известно (см. Комментарий Павла Лебединского), что UMDH не может обрабатывать определенные типы распределителей, например, SysAllocString. Если вы действительно используете некоторые экзотические распределители, вы можете попробовать LeakDiag - он обрабатывает гораздо больше из них.
Отображение между исполняемыми адресами и именами функций определяется в PDB.
Убедитесь, что ваш путь к символу установлен правильно,
особенно если вы используете UMDH на машине, отличной от той, которая компилировала код.