Быстрый доступ к отладчику WinDbg
Четверг, 17 Июль, 2008Эта легко запоминающаяся ссылка поможет вам быстро найти и установить отладчик WinDbg:
- Дмитрий Востоков @ DumpAnalysis.org -
Эта легко запоминающаяся ссылка поможет вам быстро найти и установить отладчик WinDbg:
- Дмитрий Востоков @ DumpAnalysis.org -
Новые карикатуры от Narasimha Vedala:
Долина смерти
Моментальный фикс
Не тот дамп
- Дмитрий Востоков @ DumpAnalysis.org -
Оригинальная статья: Bugs prosecute defectors
В предыдущей части мы рассмотрели как проверить тип дампа памяти: Часть 2. Сейчас я постараюсь объяснить падение (аварийное состояние) программ и роль постмортем отладчика (postmortem debugger).
Иногда компьютер (центральный процессор, ЦПУ) не может выполнить свою работу потому, что инструкции, которые он получает для того, чтобы сделать расчеты, прочитать или записать данные, являются неправильным. Представьте себе ситуацию, когда вы получаете адрес для доставки сообщения, и вы обнаруживаете, что он не существует… Следующая идеализированная картинка показывет эту ситуацию (если ячейки памяти, адреса, индексируются с 0, то -1, очевидно, неправильный адрес):
При обращении к неверному адресу ЦПУ выполняет специальную последовательность действий (так называемую ловушку, trap), что в конечном итоге, приводит к сохранению памяти, чтобы мы могли изучить ее содержание и выяснить, какие инструкции являлись неправильными. При падении операционной системы Windows мы видим синий экран, а затем память ядра (kernel memory) или полная физическая память компьютера сохраняется в файл (так называемый дамп ядра или полный дамп памяти, соответственно). Если у нас приложение или служба завершается аварийно, то ее содержимое памяти тоже сохраняются в файл (так называемый пользовательский дамп, user dump). Этот дамп памяти также называется постмортем дамп, и мы называем программу, которая сохраняет его - постмортем отладчик. Таких программ может быть несколько, и одна, которая указывается в реестре для выполнения, называется постмортем отладчик по умолчанию (default postmortem debugger). Следующая картинка иллюстрирует этот случай (здесь служба принтера, spoolsv.exe, аварийно завершилась из-за ошибки драйвера принтера):
В операционных системах до появления Windows Vista это был Dr. Watson (drwtsn32.exe), но он иногда не работал из-за ограничений, особенно в системах удаленного многопользовательского доступа (terminal services environment) и я всегда рекомендовал указывать в реестре другой отладчик, NTSD (ntsd.exe):
Как сделать NTSD постмортем отладчиком по умолчанию (статья на английском)
Я предпочитаю называть пользовательские дампы и полные дампы/дампы ядра постмортем дампами потому, что они сохраняются после того, как приложение, служба или система уже аварийно завершилась (фатальная ошибка уже произошла). Это отличает их от текущих снимков памяти (live memory dumps) сохраненных в ручную по желанию.
- Дмитрий Востоков @ DumpAnalysis.org -
Оригинальная статья: Crash Dumps for Dummies (Part 3)