Архив за 17 Июль , 2008

Быстрый доступ к отладчику WinDbg

Четверг, 17 Июль, 2008

Эта легко запоминающаяся ссылка поможет вам быстро найти и установить отладчик WinDbg:

windbg.org

- Дмитрий Востоков @ DumpAnalysis.org -

Баги-предатели

Четверг, 17 Июль, 2008

Новые карикатуры от Narasimha Vedala:

Долина смерти

DBG_ValleyOfDeath from Narasimha Vedala (click to enlarge)

Моментальный фикс

DBG_AtAGlance from Narasimha Vedala (click to enlarge)

Не тот дамп

DBG_IgorMessesUp from Narasimha Vedala (click to enlarge)

- Дмитрий Востоков @ DumpAnalysis.org -

Оригинальная статья: Bugs prosecute defectors

Дампы Памяти для Чайников (Часть 3)

Четверг, 17 Июль, 2008

В предыдущей части мы рассмотрели как проверить тип дампа памяти: Часть 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)