Скорее всего! Можно выполнить программу в инструкции по отладчику по инструкции. Вам также придется записывать инструкции в той или иной форме, хотя исходный код или исполняемый файл программы могут работать так же хорошо.
Некоторые программы, например, хранить такие файлы, как сетевые журналы или журналы действий, чтобы сохранить состояние программы в определенный момент времени. Базы данных также могут хранить важную информацию, которая также может быть просмотрена, когда программа «не работает». Что-то простое, как журнал, может быть полезно для записи ввода в программу.
Для выполнения инструкций вы должны использовать команды nexti
и stepi
в GDB, чтобы выполнить инструкцию по инструкции. Мы также можем использовать disassemble
, чтобы получить инструкции по сборке, которые должны хорошо сочетаться с отдельными инструкциями CPU. Также должны быть аналоги в LLDB и отладчике MSVC.
И теперь, для моего примера «состояния управляемого пользователя программы в памяти:»
Это Windows, синий экран смерти, но мы можем видеть, что Windows, на самом деле создает физическую дамп памяти, а также использует отладчик для ядра.
Можно предположить, что дамп физической памяти можно использовать для определения проблем с системой в данный момент времени и из-за сбоя операционной системы.
Что касается записи отдельных инструкций, сам исполняемый файл программы должен быть достаточным для записи того, что именно произошло, поскольку путь выполнения программы четко определен функциями и операциями, которые он использует. Если вы не используете какое-то метапрограммирование во время выполнения, где вы пишете код выполнения во время выполнения, все должно быть в состоянии быть проанализировано. И даже если вы исполняете код исполнения во время выполнения, он все равно должен быть извлечен из хорошего дампа памяти, возможно изнутри изолированной среды или через метапрограмму для извлечения состояния неисправной программы.
Похожие: http://www.unknownroad.com/rtfm/gdbtut/gdbadvanced.html#STEPI
Какова цель вашего вопроса? Отладка? Тестирование? Моделирование? Все возможно, но все решения различаются. Если вы дадите дополнительную информацию, мы можем предложить лучшую помощь :-) – Klaus