WinDbg, отобразить пути Symbol Server для загруженных модулей (даже если символы не загружались)? - PullRequest
2 голосов
/ 05 января 2010

Есть ли способ из WinDbg без использования API DbgEng отображать пути сервера символов (т. Е. PdbSig70 и PdbAge ) для всех загруженных модулей?

Я знаю, что

lml

делает это для модулей, чьи символы загружены. Я хотел бы знать эти пути для символов, которые не загружал , чтобы диагностировать проблему. Кто-нибудь знает, возможно ли это без использования API DbgEng?

изм:

Я также понимаю, что вы можете использовать

!sym noisy

для получения сообщений об ошибках при загрузке символов. Хотя это имеет полезный вывод, оно чередуется с другим выводом, который я хочу, и не является простым и понятным, как 'lml'

Ответы [ 3 ]

2 голосов
/ 05 января 2010

! Sym noisy и! Sym quiet могут включить дополнительный вывод для загрузки символов, т. Е .:

!sym noisy
.reload <dll>
X <some symbol in that DLL to cause a load>
!sym quiet

Когда отладчик пытается загрузить PDB, вы увидите все пути, которые он пытается загрузить, и если PDB не были найдены или были отклонены.

1 голос
/ 06 января 2010

Насколько мне известно, в Windbg нет готового решения. Вы можете написать отличный скрипт или расширение, в зависимости от того, где вы наиболее приспособлены.

Это довольно выполнимо в windbg как скрипт. Информация, которую вы запрашиваете, описана в каталоге отладки PE.

Вот ссылка на пример кода C ++, который подробно описывает извлечение полезной информации (например, имя файла символов в вашем случае). Адаптация его к скрипту windbg не должна вызывать проблем.

Вот еще один полезный указатель с тоннами информации об автоматизации windbg. В частности, в нем говорится о способах передачи аргументов в сценарии windbg (что также полезно в вашем случае иметь общий код извлечения отладочной информации, который вы можете вызывать из цикла итерации загруженных модулей).

0 голосов
/ 18 августа 2012

Вы можете использовать команду

lme

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

...