Восстановить дамп памяти

Если при тестировании на компьютере без отладчика, скажем, на клиентском компьютере, я столкнулся с ошибкой, которая могла испортить состояние программы, но на самом деле не привела к ее сбою, я знаю, что могу сделать дамп памяти с помощью диспетчера задач Windows (щелкните правой кнопкой мыши по имени процесса создать файл дампа).

Я могу использовать их с WinDbg, чтобы заглянуть в память и т. д., но что было бы наиболее полезно для меня, так это возможность восстановить дамп в памяти, чтобы я мог продолжать взаимодействовать с программой. Это возможно? Если да, то как? Есть ли инструмент, который может восстановить его, или мне нужно написать свой собственный.


person 0xFE    schedule 10.12.2012    source источник
comment
@ m0skit0 Я обновил свой вопрос. Можете ли вы сказать мне, как это сделать?   -  person 0xFE    schedule 13.12.2012
comment
Я не знаю для Windows, которую вы, кажется, используете. Для Linux проверьте это.   -  person m0skit0    schedule 13.12.2012


Ответы (2)


Типичные дампы или минидампы пользовательского режима не содержат достаточно информации для этого. Хотя они содержат всю память пользовательского режима, они не содержат памяти ядра, поэтому открытые дескрипторы ресурсов ядра, таких как файлы или сетевые сокеты, не будут включены в дамп (и даже если бы они были, жесткий диск, скорее всего, изменился, поэтому просто попытайтесь запись на жесткий диск может еще больше повредить вашу систему).

Единственный способ восстановить дамп памяти, который я вижу, — это восстановить всю память и все остальные состояния, такие как состояние жесткого диска, что можно сделать с помощью большинства программ для виртуальных машин (которое, однако, отключит все ваши сетевые подключения при восстановлении; к счастью, большинство программ может обрабатывать потерянные сетевые подключения лучше, чем потерянные дескрипторы файлов).

person mihi    schedule 07.05.2013

Я обнаружил, что могу сделать это с помощью моментальных снимков Hyper-V. Если я запускаю свою программу в виртуальной машине, я могу опционально сделать дамп памяти, создать снапшот, передать дамп при необходимости, вернуться через некоторое время, восстановить снимок и продолжить работу программы.

person 0xFE    schedule 14.12.2012