Подтвердить что ты не робот

Восстановление состояния программы из основного файла

Возможно ли при любых обстоятельствах восстановить состояние программы до того, что было при создании основного файла?

Причина, по которой я спрашиваю, заключается в том, что для использования возможности gdb выполнять функции и т.д. вам нужно иметь запущенный экземпляр. Разумеется, должно быть возможно выполнить процесс поддельного выполнения одного и того же исполняемого файла с установленным состоянием, являющимся содержимым ядра?

Если не какие альтернативы существуют в той ситуации, которая заставила меня хотеть сделать это в первую очередь? В этом случае обратный след ядра привел к библиотечной функции, и я хотел реплицировать входные данные для этого вызова функции, но один из входов был сложным объектом, который можно было легко сериализовать в строку с вызовом функции в запуске экземпляр, но не так в дампе ядра.

4b9b3361

Ответ 1

Теоретически можно делать именно то, что вы хотите, но (AFAICT) нет поддержки для этого в GDB (пока).

Лучше всего использовать GDB-7.0 и использовать встроенные скрипты python для повторной реализации функции сериализации.

Ответ 2

Что уже делает основной файл? Если вы загрузите gdb с исходным исполняемым файлом и файлом ядра

gdb myprogram.exe -c mycorefile

Тогда он перейдет к точке, где он разбился. Вы можете использовать все обычные функции проверки для просмотра переменных, см. Трассировку стека и т.д.

Или я не понял ваш вопрос?