Дампы Памяти для Чайников (Часть 3)
Sponsored link: Software Diagnostics Services
В предыдущей части мы рассмотрели как проверить тип дампа памяти: Часть 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)
Magazines:
Debugged! MZ/PE: MagaZine for/from Practicing Engineers
Books:
Software Diagnostics: The Collected Seminars
The Old New Crash: Cloud Memory Dump Analysis
Mobile Software Diagnostics: An Introduction
Pattern-Oriented Network Trace Analysis
Malware Narratives: An Introduction
Philosophy of Software Diagnostics: An Introduction, Part 1
Victimware: The Missing Part of the Equation
Pattern-Based Software Diagnostics: An Introduction
Systemic Software Diagnostics: An Introduction
Accelerated Windows Debugging 3: Training Course Transcript and WinDbg Practice Exercises
Pattern-Driven Software Diagnostics: An Introduction
Memory Dump Analysis Anthology, Volume 6
Accelerated Windows Software Trace Analysis: Training Course Transcript
Accelerated Mac OS X Core Dump Analysis: Training Course Transcript and GDB Practice Exercises
Software Narratology: An Introduction to the Applied Science of Software Stories
Introduction to Pattern-Driven Software Problem Solving
Memory Dump Analysis Anthology: Color Supplement for Volumes 4-5
Windows Debugging Notebook: Essential User Space WinDbg Commands
Memory Dump Analysis Anthology, Volume 5
Memory Dump Analysis Anthology, Volume 4
Memory Dump Analysis Anthology: Color Supplement for Volumes 1-3
Memory Dump Analysis Anthology, Volume 3
First Fault Software Problem Solving: A Guide for Engineers, Managers and Users
x64 Windows Debugging: Practical Foundations
Windows Debugging: Practical Foundations
DLL List Landscape: The Art from Computer Memory Space
Dumps, Bugs and Debugging Forensics: The Adventures of Dr. Debugalov
WinDbg: A Reference Poster and Learning Cards
Memory Dump Analysis Anthology, Volume 2