В настоящее время я пытаюсь разработать инструмент для создания дампа памяти, который мог бы получить дамп памяти сбойного процесса от другого процесса. Но я абсолютно новичок в этом, и я хочу использовать это как возможность получить четкое представление о методах дампа памяти.
Я хочу знать рабочую парадигму создания дампа памяти для сбойного процесса. Мое настоящее дикое воображение, как показано ниже:
Когда происходит сбой процесса, операционная система всегда это знает (я не знаю как, но она должна это делать). Затем ОС запустила какой-то механизм для копирования содержимого виртуального адресного пространства сбойного процесса в так называемый файл дампа. Тогда мы могли бы использовать WinDbg для отладки с файлом дампа.
Мне интересно, если мы сможем скопировать все виртуальное адресное пространство аварийного процесса в файл дампа, не будет ли этот файл слишком большим? Или мы могли бы указать, какое виртуальное адресное пространство (ядро / пользователь) выгружать?
Может ли кто-нибудь дать мне несколько ссылок, особенно по следующим аспектам:
что такое дамп памяти?
Если есть так называемые дамп ядра и дамп пользовательского режима, что это такое?
На платформе Windows, какие API мне понадобятся? Будут ли актуальны такие функции, как MiniDumpWriteDump () ?
Когда ОС обнаруживает сбой определенного процесса, есть ли какой-либо сигнал, который я могу отслеживать, чтобы мой Инструмент дампа был уведомлен о начале дампа?
Спасибо, что нашли время, чтобы увидеть мои слова.
ADD1:
(5) Что такое мини-отвалы? Как это связано с дампами режима ядра / пользователя?
(6) Когда мы говорим о дампе памяти, о какой памяти мы говорим? Виртуальная память или Физическая память ? Из этой картинки , я думаю, это должна быть физическая память.
ADD2:
Я только что нашел хорошую ссылку о написании MiniDump с API, содержащегося в DbgHelp.dll. Я хотел бы поделиться этим. Если вы можете предоставить другие хорошие материалы, связанные с этим, не могли бы вы поделиться им? Спасибо.
( Кстати: я буду продолжать обновлять эту ветку с моим прогрессом. Любые комментарии будут высоко оценены. )