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

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

я знаю это

lml

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

отредактирован:

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

!sym noisy

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

3 ответа

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

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

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

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

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

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

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

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

lme

чтобы показать модули, которые не имеют загруженных символов.

Другие вопросы по тегам