Анимация или пошаговое выполнение программы относится к методу отладки выполнения кода по одной инструкции или строке за раз. Программист может исследовать состояние программы, машины и связанных данных до и после выполнения определенной строки кода. Это позволяет программисту оценивать эффекты каждого оператора или инструкции по отдельности и, таким образом, получать представление о поведении (или неправильном поведении) выполняемой программы. Почти все современные IDE и отладчики поддерживают этот режим выполнения.
Пошаговое выполнение инструкций или один цикл изначально относилось к технике остановки часов процессора и ручного их продвижения на один цикл за раз. Для того чтобы это стало возможным, требуются три вещи:
В процессорной линейке IBM System 360 , анонсированной в 1964 году, эти возможности были реализованы с помощью переключателей на передней панели, кнопок и групп неоновых ламп. Другие системы, такие как PDP-11 , предоставляли аналогичные возможности.
На более новых процессорах, которые могут не поддерживать физическую остановку часов и иметь слишком много внутреннего состояния для разумного отображения на панели, аналогичная функциональность может быть реализована с помощью флага ловушки , который при включении дает команду процессору останавливаться после каждой инструкции аналогично точке останова .
По мере того, как многопроцессорность становилась все более распространенной, такие методы имели ограниченную практичность, поскольку многие независимые процессы останавливались одновременно. Это привело к разработке фирменного программного обеспечения от нескольких независимых поставщиков, которые предоставляли схожие функции, но намеренно ограничивали точки останова и пошаговое выполнение инструкций для конкретных прикладных программ в определенных адресных пространствах и потоках . Состояние программы (применительно к выбранному приложению/потоку) сохранялось для проверки на каждом шаге и восстанавливалось перед возобновлением, создавая впечатление однопользовательской среды. Обычно этого достаточно для диагностики проблем на уровне приложения.
Вместо использования физической кнопки остановки для приостановки выполнения, чтобы затем начать пошаговое выполнение прикладной программы, обычно необходимо заранее установить точку останова или запрос «Пауза», как правило, на определенном операторе/инструкции в программе (выбранной заранее или, по умолчанию, на первой инструкции).
Для обеспечения полноэкранной «анимации» программы обычно требуется подходящее устройство ввода-вывода, такое как видеомонитор, которое может отображать разумный раздел кода (например, в формате дизассемблированного машинного кода или исходного кода ) и предоставлять указатель (например, <==) на текущую инструкцию или строку исходного кода. По этой причине широкое использование этих полноэкранных аниматоров в мире мэйнфреймов пришлось ждать появления систем обработки транзакций , таких как CICS в начале 1970-х годов, и изначально ограничивалось отладкой прикладных программ, работающих в этой среде. Более поздние версии тех же продуктов обеспечивали межрегиональный мониторинг/отладку пакетных программ и других операционных систем и платформ.
С появлением персональных компьютеров , примерно с 1980 года, интегрированные отладчики смогли более широко внедряться в эту однопользовательскую область и обеспечивать аналогичную анимацию путем разделения экрана пользователя и добавления отладочной «консоли» для обеспечения взаимодействия с программистом.
Borland Turbo Debugger был самостоятельным продуктом, представленным в 1989 году, который обеспечивал полноэкранную программную анимацию для ПК. В более поздних версиях была добавлена поддержка объединения анимации с фактическими исходными строками, извлеченными во время компиляции.
Существует по крайней мере три различных программных метода создания «анимации» во время выполнения программы.
Преимущество последнего метода заключается в том, что не вносятся изменения в скомпилированную программу для предоставления диагностики, и существует почти неограниченный простор для обширной диагностики, поскольку инструмент может дополнять диагностику хост-системы дополнительными функциями трассировки программного обеспечения. Также возможно автоматически диагностировать (и предотвращать) множество ошибок программы, используя эту технику, включая нарушения хранения и переполнения буфера . Обнаружение циклов также возможно с использованием автоматической трассировки инструкций вместе с пороговыми значениями количества инструкций (например, пауза после 10 000 инструкций; отображение последних n инструкций). Второй метод изменяет только инструкцию, которая остановится перед ее выполнением, а затем может восстановить ее перед необязательным возобновлением программистом. Некоторые аниматоры опционально позволяют использовать более одного метода в зависимости от требований. Например, использование метода 2 для выполнения до определенной точки на полной скорости, а затем использование моделирования набора инструкций после этого.
Аниматор может объединять или не объединять в себе другие функции тестирования/отладки, такие как трассировка программы , дамп, условные точки останова и изменение памяти , изменение потока программы , анализ покрытия кода , обнаружение «горячих точек», обнаружение циклов и т. п.