2016-09-05 12 views
1

Я использовал windbg.exe для отладки того же exe. Каждый раз, когда windbg загружает этот exe, он потратит минуту на загрузку символов. В левом нижнем углу окна windbg отображается «Загрузка символов [winnt.dll] ...» ».Я установил путь символа в windbg, но почему каждый раз, когда windbg загружает один и тот же символ для одного и того же exe?

Я вижу это несколько раз. Я установил свой путь к символам, и одна линия:

************* Symbol Path validation summary ************** 
Deferred SRV*D:\SymCache\Microsoft*http://msdl.microsoft.com/download/symbols 

Это странно для меня, до тех пор, как я установил загрузки Майкрософт URL и локальный кэш, реж почему каждый раз, когда я открываю WinDbg к загрузить тот же exe, windbg загрузит тот же winnt.dll .....?

Спасибо.

ответ

3

WinDbg не загружает символы снова, но он попытается загрузить те файлы, которые он не нашел в последний раз.

В моем примере, я скачал символы и принес hal.dll, kdcom.dll, ntkrnlmp.pdb и ntoskrnl.exe.

Выполнение .reload еще раз, он искал halaacpi.dll еще раз. Мониторинг трафика с помощью Wireshark вы можете увидеть, что:

HTTP roundtrip times

Пожалуйста, обратите внимание, безумные времена HTTP туда и обратно по 8+ секунд на запрос, поэтому потребовалось 66 секунд, просто чтобы понять, что нет ничего, чтобы скачать. Смотри также: Is WinDbg Supposed to Be So Excruciatingly Slow?

1

Если PDB в локальной загрузке кэша symsrv он оттуда еще он загружает из symbolserver локального кэша может быть также подключенный сетевой диск к общей папке в хосте-компьютере при отладке в виртуальной машине и т.д. и т.д. diwnloading является терминологией ststes он извлекает символы из где-то, это может быть внутренний или внешний файл vize: //. Или http: //