Когда я делаю анализ файла дампа, я настраиваю путь к символу, чтобы указать на сервер символов Microsoft. Как windbg знает, что файл дампа был сгенерирован под какой ОС и как он загружает правильные символы для этой ОС?Как windbg определяет, какие символы OS загружаются для файла дампа
ответ
Чтобы сопоставить символы с бинарными, WinDbg смотрит на объекты под названием Debug Directories. Отладочные каталоги - это разделы в PE-модулях (формат файлов, используемый Windows для всех типов исполняемых файлов). Отладочные каталоги просто содержат ссылки на типы отладочной информации. Если ввести команду в CMD окне link /dump /headers <my_module_name>
, он выдаст что-то вроде этого:
...
Debug Directories
Time Type Size RVA Pointer
-------- ------ -------- -------- --------
4CC78FB1 cv 22 00102588 101988 Format: RSDS, {30976E0B-FBF7-45EF-8608-99932F2B791F}, 2, ntdll.pdb
4CC78FB1 ( A) 4 00102584 101984 BB03197E
...
Это выход для ntdll.dll. Вы можете видеть, что отладочная информация CV (для CodeView) содержится в файле ntdll.pdb, а GUID этого PDB должен совпадать с идентификатором в ссылке. Этот GUID генерируется случайным образом для каждого модуля во время сборки.
Команда !lmi
в WinDbg также выведет эту информацию в другом формате.
Что делает WinDbg при загрузке символов с сервера символов, он отправляет запрос на сервер символов для получения файла с именем 'ntdll.pdb' с соответствующим GUID.
- 1. WinDbg для создания файла дампа при сбое?
- 2. WINDBG: отображение флагов захвата файла дампа
- 3. Windbg - Обнаружение символов, необходимых для дампа сбоя
- 4. Препроцессор дампа GCC определяет
- 5. Файл дампа Client.exe через WinDbg:
- 6. WinDbg символы окон
- 7. Анализ файла дампа сбоя
- 8. Отладка дампа памяти devenv.exe в WinDbg
- 9. Содержимое файла дампа MyMoneyTracker на Android os
- 10. Препроцессор дампа Visual C++ определяет
- 11. Использование Windbg для анализа файла дампа: какой путь я должен установить в пути к файлу символа?
- 12. Чтение файлов дампа .NET 4.0 в WinDBG
- 13. windbg и символы
- 14. символы несоответствия, ida/windbg
- 15. Создание загружаемого WinDbg дампа гостевой ОС QEmu
- 16. Как анализировать файл дампа из DLL-файла Delphi?
- 17. Windbg неправильные символы msvcr80
- 18. Как создать объекты на основе памяти дампа в расширении WinDbg?
- 19. WinDbg: частный PDB символы
- 20. WinDbg анализ аварийного дампа, высокая загрузка процессора -
- 21. Символы (pdb) для родной dll не загружаются из-за этапа пост-сборки
- 22. Как написать значение $ ip для файла в windbg командой windbg
- 23. windbg отказывается загружать символы для дампа (не удалось проверить временную метку)
- 24. Использование C# для извлечения стека из файла дампа bluescreen
- 25. создание файла дампа для управляемого (.net) приложения с использованием windbg (или mscordmp)
- 26. WinDbg отсутствующие символы для управляемого кода
- 27. Как получить символы для одной DLL без дампа?
- 28. Чтение большого файла дампа
- 29. Как получить идентификаторы потоков из дампа памяти в WinDbg?
- 30. Пытается анализировать файл дампа с помощью WinDbg: PEB выгружается, не загружается символы
Вы хотите сказать, что это часть модулей PE, встроенных в сборки? Когда я создаю приложение, я могу запустить его на разных ОС с различными пакетами обновлений. Я смущен тем, как эту информацию, хранящуюся в PE-модуле, можно использовать, когда само приложение работает на разных ОС. –
Каждый PE-модуль имеет свой собственный файл символов. Существует не такая вещь, как «символы для ОС», поскольку ОС состоит из смеси версий из разных пакетов обновлений, исправлений, горячих исправлений, частных двоичных файлов и т. Д. –
Скажем, сборка приложений была скомпилирована в Vista. Я создаю дамп для него в Windows 7 и еще один для Windows Server 2008. В этом случае модуль PE будет иметь идентификатор для Vista, правильно? Как два дампа будут получать символы для Windows 7 и 2008 в этом случае? –