Серия
Средства дефрагментации #167 — отладка аварийных дампов в режиме пользователя
В этом эпизоде средств Defrag Эндрю Ричардс и Чад Beeder используют средства отладки для Windows (WinDbg), чтобы определить первопричину различных сбоев приложений, которые произошли на компьютере Эндрю. Мы используем Sysinternals ProcDump для записи дампов.
При отладке мы работаем над настройкой цветов для сжатых и зашифрованных файлов в проводнике Windows и используем монитор процессов Sysinternals, чтобы определить, почему отладчик получил доступ отказано при загрузке расширения отладчика PDE.
Мы сделали аналогичное расследование в этих двух эпизодах:
- Средства дефрагментации #135 — отладка аварийных дампов в режиме пользователя, часть 1
- Средства дефрагментации #136— отладка аварийных дампов в режиме пользователя, часть 2
Мы рассмотрим, как установить средства отладки для Windows в этом эпизоде:
Получите средства Sysinternals из http://www.sysinternals.com. Мы используем:
Получение расширения отладчика PDE из OneDrive средств Defrag
Получите путь к общедоступному серверу символов Майкрософт:
- С помощью переменной среды
setx /m _NT_SYMBOL_PATH SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols - В отладчике
.sympath SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols
Чтобы собрать дампы сбоев на собственном компьютере, установите ProcDump в качестве отладчика Postmortem (AeDebugger):
md c:\dumps
procdump.exe -ma -i c:\dumps
В любой дамп (пользователь или ядро) можно запустить автоматический анализ, чтобы просмотреть проблему:
!analyze -v
Памятка по отладке
- c0000005 является нарушением доступа — используйте ecxr и k
- c000027b — это исправленное исключение (магазин приложений) — используйте !pde.dse
- e0434352 — это исключение CLR— используйте !sos.pe
- e0697282 — это исключение C++ — использование ecxr и k
- 80000003 — это точка останова — используйте !analyze -v
- При вводе десятичного числа префикс "0n"
- При вводе шестнадцатеричного числа префикс "0x" (префикс по умолчанию)
Общие команды отладчика
.exr -1
- Просмотр кода исключения и параметров исключения
- Число, похожее на C0x и 80x, — hrESULT s (коды ошибок)
- Число, похожее на 7FFFxxx, обычно являются адресами кода (сборщика)
!адрес
- Отображение сведений об адресе: фиксация/зарезервировано/бесплатно, изображение/сопоставленное/частное
- Используется для определения того, является ли число кодом или данными.
ln
- Список ближайших адресов
- Отображает символ в адресе или рядом с ним
- Используется для определения того, является ли число кодом или данными.
.ecxr
- Измените контекст отладки на точку исключения (а не в контексте отчеты об ошибках Windows)
r
- Просмотр регистров в текущем контексте. (.ecxr создает одинаковые выходные данные)
k
- Просмотр стека вызовов
lmvm
- Подробное просмотр загруженного модуля с помощью маски
- Просмотр сведений о модуле, включая папку, метку времени, описание, авторские права, версию продукта и файла
| (вертикальный линейчатая полоса или символ канала)
- Просмотр пути исполняемого файла (например, c:\windows\notepad.exe)
!ext.error
- Получите описание кода ошибки. Лучше всего описывать системные коды ошибок.
!pde.err
- Получите описание кода ошибки. Хорошо описаны HRESULTs (80xxx и C0x)
!pde.dpx
- Скребите текущий поток для доказательства (символы, структуры, строки и т. д.)
.Форматы
- Отображает число в различных форматах.
- Простой способ работы, если число на самом деле является текстом ASCII, или датой и временем
!sos.pe
- Отображение исключения СРЕДЫ CLR.
- Если существует внутреннее исключение, щелкните ссылку, чтобы просмотреть ее.
.cordll -u & .cordll -l
- Если SOS не загружен, попробуйте выполнить выгрузку и загрузку поддержки СРЕДЫ CLR.
!peb
- Просмотр блока среды процесса (модули, командная строка, переменные среды и т. д.)
!teb
- Просмотр текущего блока среды потока (диапазон стека, последний код ошибки, последний код состояния и т. д.)
!gle
- Получить последнюю ошибку
- Отображение последнего кода ошибки и последнего кода состояния текущего потока
.cls
- Снимите экран.
.перезаряжать
- Принудительно перезагрузить (скачать) символы для модулей в текущем стеке.
.reload /f
- Принудительная полная перезагрузка (скачивание) символов для модулей в текущем стеке.
Магазин приложений
Чтобы просмотреть установленные приложения Магазина и их версию, выполните следующие действия.
Редактор реестра (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActivatableClasses\Package
PowerShell
В этом эпизоде средств Defrag Эндрю Ричардс и Чад Beeder используют средства отладки для Windows (WinDbg), чтобы определить первопричину различных сбоев приложений, которые произошли на компьютере Эндрю. Мы используем Sysinternals ProcDump для записи дампов.
При отладке мы работаем над настройкой цветов для сжатых и зашифрованных файлов в проводнике Windows и используем монитор процессов Sysinternals, чтобы определить, почему отладчик получил доступ отказано при загрузке расширения отладчика PDE.
Мы сделали аналогичное расследование в этих двух эпизодах:
- Средства дефрагментации #135 — отладка аварийных дампов в режиме пользователя, часть 1
- Средства дефрагментации #136— отладка аварийных дампов в режиме пользователя, часть 2
Мы рассмотрим, как установить средства отладки для Windows в этом эпизоде:
Получите средства Sysinternals из http://www.sysinternals.com. Мы используем:
Получение расширения отладчика PDE из OneDrive средств Defrag
Получите путь к общедоступному серверу символов Майкрософт:
- С помощью переменной среды
setx /m _NT_SYMBOL_PATH SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols - В отладчике
.sympath SRV*C:\My\Sym*https://msdl.microsoft.com/download/symbols
Чтобы собрать дампы сбоев на собственном компьютере, установите ProcDump в качестве отладчика Postmortem (AeDebugger):
md c:\dumps
procdump.exe -ma -i c:\dumps
В любой дамп (пользователь или ядро) можно запустить автоматический анализ, чтобы просмотреть проблему:
!analyze -v
Памятка по отладке
- c0000005 является нарушением доступа — используйте ecxr и k
- c000027b — это исправленное исключение (магазин приложений) — используйте !pde.dse
- e0434352 — это исключение CLR— используйте !sos.pe
- e0697282 — это исключение C++ — использование ecxr и k
- 80000003 — это точка останова — используйте !analyze -v
- При вводе десятичного числа префикс "0n"
- При вводе шестнадцатеричного числа префикс "0x" (префикс по умолчанию)
Общие команды отладчика
.exr -1
- Просмотр кода исключения и параметров исключения
- Число, похожее на C0x и 80x, — hrESULT s (коды ошибок)
- Число, похожее на 7FFFxxx, обычно являются адресами кода (сборщика)
!адрес
- Отображение сведений об адресе: фиксация/зарезервировано/бесплатно, изображение/сопоставленное/частное
- Используется для определения того, является ли число кодом или данными.
ln
- Список ближайших адресов
- Отображает символ в адресе или рядом с ним
- Используется для определения того, является ли число кодом или данными.
.ecxr
- Измените контекст отладки на точку исключения (а не в контексте отчеты об ошибках Windows)
r
- Просмотр регистров в текущем контексте. (.ecxr создает одинаковые выходные данные)
k
- Просмотр стека вызовов
lmvm
- Подробное просмотр загруженного модуля с помощью маски
- Просмотр сведений о модуле, включая папку, метку времени, описание, авторские права, версию продукта и файла
| (вертикальный линейчатая полоса или символ канала)
- Просмотр пути исполняемого файла (например, c:\windows\notepad.exe)
!ext.error
- Получите описание кода ошибки. Лучше всего описывать системные коды ошибок.
!pde.err
- Получите описание кода ошибки. Хорошо описаны HRESULTs (80xxx и C0x)
!pde.dpx
- Скребите текущий поток для доказательства (символы, структуры, строки и т. д.)
.Форматы
- Отображает число в различных форматах.
- Простой способ работы, если число на самом деле является текстом ASCII, или датой и временем
!sos.pe
- Отображение исключения СРЕДЫ CLR.
- Если существует внутреннее исключение, щелкните ссылку, чтобы просмотреть ее.
.cordll -u & .cordll -l
- Если SOS не загружен, попробуйте выполнить выгрузку и загрузку поддержки СРЕДЫ CLR.
!peb
- Просмотр блока среды процесса (модули, командная строка, переменные среды и т. д.)
!teb
- Просмотр текущего блока среды потока (диапазон стека, последний код ошибки, последний код состояния и т. д.)
!gle
- Получить последнюю ошибку
- Отображение последнего кода ошибки и последнего кода состояния текущего потока
.cls
- Снимите экран.
.перезаряжать
- Принудительно перезагрузить (скачать) символы для модулей в текущем стеке.
.reload /f
- Принудительная полная перезагрузка (скачивание) символов для модулей в текущем стеке.
Магазин приложений
Чтобы просмотреть установленные приложения Магазина и их версию, выполните следующие действия.
Редактор реестра (regedit.exe)
- HKEY_CURRENT_USER\SOFTWARE\Classes\ActivatableClasses\Package
PowerShell
Хотите оставить отзыв? Сообщить о проблеме можно здесь.