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