Иногда компьютер внезапно перестаёт работать, выводит сообщение о критической ошибке. В Windows это может выглядеть примерно так:
Чтобы разработчикам было легче разобраться в причинах этого, им нужно знать, что происходило в компьютере прямо перед этим моментом. Чтобы это увидеть, им нужен дамп — слепок оперативной памяти, в котором хранятся данные, которые были до поломки.
Что такое дамп памяти
Когда компьютер работает, у него постоянно что-то есть в оперативной памяти: ядро операционной системы, драйверы, запущенные программы и другие данные. Всем этим пользуется процессор — он работает с памятью напрямую, берёт оттуда инструкции и записывает новые значения в разные ячейки памяти.
Если компьютер зависает и не может работать дальше, это значит, что процессор попробовал выполнить очередные инструкции из памяти, но не смог этого сделать. В этом случае всё останавливается и компьютер не знает, как ему поступить дальше.
Некоторые системы настроены так, что в минуту неопределённости они записывают всю свою оперативную память в файл на диске и готовятся к перезагрузке.
В Windows можно выбрать 5 вариантов дампа — от полного до малого на 256 килобайт. Чем больше дамп, тем больше в нём информации для отладки и поиска ошибки, но в то же время тем сложнее потом несчастным разработчикам искать, в чём именно проблема.
Как выглядит дамп памяти
Внутри дамп памяти выглядит как набор шестнадцатеричных значений каждой ячейки памяти. Чтобы в нём разбираться, нужно очень хорошо знать архитектуру системы, адресацию памяти и логическое устройство процессора.
Зачем нужен дамп памяти
Дамп нужен для того, чтобы разработчики операционной системы, процессора или программ могли понять причины ошибки и исправить их. Для этого они загружают дамп в специальный отладчик и смотрят, в каком режиме программа работала в памяти, какие ресурсы она использовала и какие были значения у ключевых переменных.
Например, в дампе можно увидеть, что программа сказала процессору взять значение переменной из ячейки памяти 0FA67F, а должна была из ячейки 0FB67F. Процессор попытался это сделать, но эта ячейка уже использовалась другой программой или каким-то драйвером. В итоге вся работа нарушилась, процессор начал выполнять неправильные инструкции, и всё сломалось.
Полный дамп — это полезно, но не всегда безопасно
Иногда разработчики добавляют в свои программы автоматическую выгрузку дампа при сбоях, а потом просят отправить им этот файл. Это полезно для разработчиков, но иногда небезопасно для пользователя.
С одной стороны, разработчик получает всю информацию о том, что происходило в момент сбоя: как работал процессор, что было в переменных программы и какая именно команда привела к ошибке. Это помогает быстрее исправлять ошибки и выпускать новые версии программ.
С другой стороны, в дампе может оказаться личная информация пользователя:
- список запущенных программ;
- названия открытых вкладок браузера;
- содержимое буфера обмена;
- содержимое файла, с которым работал пользователь в этой программе.
Никто кроме разработчиков не знает, что именно выгружается в дамп, поэтому решение об отправке отладочной информации каждый принимает сам. Хотите помочь разработчикам — отправляйте, но помните, что часть личных данных может отправиться вместе с отчётом об ошибке.