Дамп падения программы (файл .dmp) позволяет разработчику проанализировать причины сбоя, приведшие к нештатному (аварийному) завершению программы.
Лучше всего создавать полный дамп. Он содержит снимок всего адресного пространства процесса, таблицу хендлов и пр. важную инфу.
Если программа создана с отладочными символами, разработчик по дампу может увидеть место в исходном коде и стек вызова функций на момент падения программы. Например, вот какой результат мы увидим при анализе дампа в WinDbg (попытка разыменовать нулевой указатель):
Как создать дамп падения программы
Приведу несколько наиболее удобных на мой взгляд способов:
1) Используя подсистему WER (Windows Error Reporting). Поддерживается в Windows Vista и выше.
1.1. Примените такой твик (файл .reg):
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps] «DumpFolder»=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,44,00,72,00,69, 00,76,00,65,00,25,00,5c,00,43,00,72,00,61,00,73,00,68,00,44,00,75,00,6d,00, 70,00,73,00,00,00 «DumpCount»=dword:0000000a «DumpType»=dword:00000002
(либо скачайте и примените готовый твик из архива во вложении CrashDumps_WER)
Синий Экран Смерти (BSoD). Узнаем причину с помощью ДАМПА памяти Windows
1.2. Запустите сбойное приложение.
1.3. Дамп будет создан в папке C:CrashDumps
1.4. Отмените изменения в реестре, удалив ветку HKLMSOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps, или примените соответствующий твик из архива во вложении.
Можно также настроить и другие параметры: см. WER Settings (Windows)
2) Используя SysInernals ProcDump.
А.
2.1. Скачайте и распакуйте SysInernals ProcDump.
2.2. В эту же папку положите сбойную программу.
2.3. Запустите командную строку от имени администратора.
2.4. Перейдите в каталог, где у Вас расположена программа ProcDump, например, командой:
cd /d «c:ProcDump»
Источник: www.safezone.cc
Файлы дампа в отладчике Visual Studio
Область применения:Visual Studio
Visual Studio для Mac
Visual Studio Code
Файл дампа — это моментальный снимок, показывающий выполнявшийся процесс и загруженные для приложения модули в определенный момент времени. Дамп со сведениями о куче также содержит моментальный снимок памяти приложения на этот момент.
Открытие файла дампа с кучей в Visual Studio в чем-то подобно остановке в точке останова во время сеанса отладки. Хотя вы не можете продолжить выполнение, но можете проверить стеки, потоки и значения переменных приложения на момент создания дампа.
Для непонимающих.
В основном дампы используются для отладки проблем на компьютерах, к которым у разработчиков нет доступа. Если вы не можете воспроизвести на своем компьютере аварийное завершение или зависание программы, возникшие на компьютере клиента, вы можете записать файл дампа с его компьютера. Дампы также создаются тест-инженерами, чтобы сохранить данные для дополнительного тестирования.
Отладчик Visual Studio может сохранять файлы дампа для управляемого и машинного кода. Он может отлаживать файлы дампа, созданные Visual Studio или другими приложениями, способными сохранять файлы в формате минидампа.
Требования и ограничения
- Для отладки файлов дампа, полученных с 64-разрядных компьютеров, необходимо запустить Visual Studio на 64-разрядном компьютере.
- Visual Studio поддерживает отладку файлов дампа управляемых приложений в Linux.
- Visual Studio поддерживает отладку файлов дампа, создаваемых приложениями в машинных кодах на устройствах ARM. Он также поддерживает отладку дампов управляемых приложений с устройств ARM, но только в отладчике машинного кода.
- Для отладки файлов дампа, полученных в режиме ядра, или использования расширения отладки SOS.dll в Visual Studio загрузите средства отладки для Windows из комплекта разработки драйверов для Windows (WDK).
- Visual Studio не поддерживает отладку файлов дампа, сохраненных в старом формате полного дампа в режиме пользователя. Полный дамп в режиме пользователя не то же самое, что и дамп с кучей.
- Отладка с использованием файлов дампа оптимизированного кода может сопровождаться ложной информацией. К примеру, встраивание компилятором функций может приводить к непредвиденным стекам вызовов, а другие виды оптимизации могут изменять время существования переменных.
Файлы дампа, с кучами или без куч
В файлах дампа могут содержаться сведения о куче, но могут и отсутствовать.
- Файл дампа со сведениями о куче содержит снимок памяти приложения, включая значения переменных на момент создания дампа. Visual Studio также сохраняет в файле дампа с кучей двоичные файлы загруженных модулей машинного кода, что может значительно упростить отладку. Visual Studio может загружать символы из файла дампа с кучей, даже если не удается найти двоичный файл приложения.
- Файлы дампа без сведений о куче намного меньше, чем дампы с кучами, но отладчику нужно будет загрузить двоичные файлы приложения, чтобы найти сведения о символах. Загруженные двоичные файлы должны точно соответствовать тем, которые выполнялись во время создания дампа. В файлах дампа без сведений о куче хранятся только значения переменных стека.
Создание файла дампа
При отладке процесса в Visual Studio можно сохранить файл дампа, когда отладчик остановил выполнение при возникновении исключения или в точке останова.
Если включена JIT-отладка, можно подключить отладчик Visual Studio к аварийному процессу, который выполняется вне Visual Studio, а затем сохранить файл дампа из отладчика. См. раздел Подключение к выполняющимся процессам.
Сохранение файла дампа
- Когда во время отладки происходит остановка (при возникновении ошибки или в точке останова), выберите Отладка>Сохранить дамп как.
- В диалоговом окне Сохранение дампа для пункта Тип файла можно выбрать Малый дамп или Малый дамп с кучей (по умолчанию).
- Укажите путь сохранения и выберите имя файла дампа, а затем нажмите Сохранить.
Вы можете создавать файлы дампа с помощью любой программы, которая поддерживает формат минидампов Windows. Такой программой, например, может быть программа командной строки Procdump из Windows Sysinternals, которая может создавать файлы аварийного дампа процесса на основе триггеров или по требованию. Дополнительные сведения об использовании других средств для создания файлов дампа см. в разделе Требования и ограничения.
Открытие файла дампа
- В Visual Studio последовательно выберите Файл>Открыть>Файл.
- В диалоговом окне Открытие файла найдите и выберите файл дампа. Обычно они имеют расширение DMP. Нажмите кнопку ОК. В окне Сводка файла минидампа отображается сводка и сведения о модулях для файла дампа, а также действия, которые можно выполнить.
- В разделе Действия:
- чтобы задать расположения для загрузки символов, выберите Set symbol paths (Задать пути к символам);
- чтобы начать отладку, выберите Debug with Managed Only (Отладка только с управляемым кодом), Debug with Native Only (Отладка только с машинным кодом), Debug with Mixed (Отладка со смешанным кодом) или Debug with Managed Memory (Отладка с управляемой памятью).
Поиск файлов EXE, PDB и исходных файлов
Для использования всех возможностей отладки в файле дампа Visual Studio требуются следующие файлы.
- Файл .exe, для которого был создан дамп, и другие двоичные файлы (DLL и т. п.), использовавшиеся процессом дампа.
- Файлы символов ( .pdb) для EXE-файлов и других двоичных файлов.
- EXE- и PDB-файлы, в точности соответствующие версии и сборке файлов, использовавшихся при создании дампа.
- Исходные файлы для соответствующих модулей. Если не удается найти исходные файлы, можно использовать дизассемблирование модулей.
Если в дампе содержатся данные кучи, Visual Studio может обойтись без двоичных файлов для некоторых модулей, но необходимы двоичные файлы для достаточного количества модулей, чтобы создавать допустимые стеки вызовов.
Пути поиска для EXE-файлов
Visual Studio автоматически ищет EXE-файлы, не включенные в файл дампа, в следующих расположениях.
- В папке, содержащей файл дампа.
- В пути к модулю, указанному файлом дампа (это путь к модулю на компьютере, на котором был собран дамп).
- В путях к символам, указанных в разделе Инструменты (или Отладка) >Параметры>Отладка>Символы. Можно также открыть страницу Символы из панели Действия окна Сводка файла дампа. На этой странице можно добавить другие расположения для поиска.
Использование страниц No Binary, No Symbols или No Source Found
Если Visual Studio не может найти файлы, необходимые для отладки модуля в дампе, отображается соответствующая страница No Binary Found (Двоичные файлы не найдены), No Symbols Found (Символы не найдены) или No Source Found (Исходные файлы не найдены). На этих страницах содержатся подробные сведения о причине проблемы, а также ссылки на действия, которые могут помочь найти файлы. См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.
См. также
- Отладка дампа управляемой памяти с помощью диагностических анализаторов .NET
- JIT-отладка
- Указание файлов символов (PDB) и файлов с исходным кодом
- IntelliTrace
Источник: learn.microsoft.com
Что такое dump(памяти) процесса и как им воспользоваться?
Думаю, что С++ имеет участие в данном вопросе. Потому что большинство ПО и игр написаны на нём или на С-подобном языке. Поправьте, если это не так.
Вообще, интересовал вопрос: что такое дамп памяти процесса и как им пользоваться. Не ОС, а какой-нибудь программы или игры.
- Правильно ли создавать дампы через диспетчер задач и есть другие способы, а нужны ли эти способы?
- Можно ли получить полезную информацию с дампа памяти?
- Какие еще есть инструменты для открытия и просмотра дампов?
- Что же там содержится в этом «черном ящике» файла дампа?
- Вопрос задан более трёх лет назад
- 6058 просмотров
2 комментария
Простой 2 комментария
На C++ можно писать/читать память процесса. Допустим есть игра и в коде игры есть переменная со значением 100, который является нашим здоровьем. Это значение находиться на нашем ОЗУ и у него есть свой адрес. Зная адрес, На C++ можно получить это значение или изменить его.
Например мы можем читать этот адрес и как только наше здоровье уменьшится переписать этот адрес со значением 100 и стать бессмертным. Таким образом пишутся читы для игр. Адреса бывают двух типов: обычные и базовые(pointer). Обычные меняются при каждом перезапуске игры, а базовый никогда не меняются. Обычные находить легко, а базовые сложно.
Находят их через CheatEngine (после установки будет туториал с задачами по нахождению и изменению адреса на самой программе). Изучай WriteProcessMemory() и ReadProcessMemory(). Если что, обращайся, нечего делать.
P.S всё что я перечислил относится ко всем программам на любом языке с любой целью.
Источник: qna.habr.com