Что заставляет UMDH не давать трассировки стека - PullRequest
3 голосов
/ 06 февраля 2009

Я использовал UMDH дюжину раз раньше, никогда без проблем.

Внезапно я не получаю имена функций в трассировке стека в моих файлах дампа - просто серия адресов.

У меня включен режим ust:

gflags exe_name + ust

Я запускаю exe_name, затем делаю

umdh -p: pid one.txt umdh -p: pid two.txt

Я смотрю на one.txt и two.txt, и у них нет признаков того, откуда они берутся. Когда я делаю diff

umdh one.txt two.txt> diff.txt

результат не полезен.

Помогите, мне нравится этот инструмент.

Ответы [ 3 ]

3 голосов
/ 13 апреля 2009

UMDH связывает PDB при выполнении команды:

umdh -d one.txt two.txt -f: outputfile.txt

Не, когда вы изначально делаете снимки. Вы должны позволить ему сделать разницу для вас!

И, да ... вам нужно правильно настроить путь к символам.

2 голосов
/ 26 апреля 2009

Синтаксис переключателей 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 - он обрабатывает гораздо больше из них.

0 голосов
/ 06 февраля 2009

Отображение между исполняемыми адресами и именами функций определено в PDB.

Убедитесь, что путь к вашему символу установлен правильно,
особенно если вы используете UMDH на машине, отличной от той, на которой скомпилирован код.

...