Ответ 1
Теоретически можно делать именно то, что вы хотите, но (AFAICT) нет поддержки для этого в GDB
(пока).
Лучше всего использовать GDB-7.0
и использовать встроенные скрипты python для повторной реализации функции сериализации.
Возможно ли при любых обстоятельствах восстановить состояние программы до того, что было при создании основного файла?
Причина, по которой я спрашиваю, заключается в том, что для использования возможности gdb выполнять функции и т.д. вам нужно иметь запущенный экземпляр. Разумеется, должно быть возможно выполнить процесс поддельного выполнения одного и того же исполняемого файла с установленным состоянием, являющимся содержимым ядра?
Если не какие альтернативы существуют в той ситуации, которая заставила меня хотеть сделать это в первую очередь? В этом случае обратный след ядра привел к библиотечной функции, и я хотел реплицировать входные данные для этого вызова функции, но один из входов был сложным объектом, который можно было легко сериализовать в строку с вызовом функции в запуске экземпляр, но не так в дампе ядра.
Теоретически можно делать именно то, что вы хотите, но (AFAICT) нет поддержки для этого в GDB
(пока).
Лучше всего использовать GDB-7.0
и использовать встроенные скрипты python для повторной реализации функции сериализации.
Что уже делает основной файл? Если вы загрузите gdb с исходным исполняемым файлом и файлом ядра
gdb myprogram.exe -c mycorefile
Тогда он перейдет к точке, где он разбился. Вы можете использовать все обычные функции проверки для просмотра переменных, см. Трассировку стека и т.д.
Или я не понял ваш вопрос?