Программная анимация - Program animation

Программная анимация или же Шагая относится к сейчас очень распространенным отладка способ исполнения код по одной «строке» за раз. Программист может проверить состояние программы, машины и связанных данных до и после выполнение определенной строки кода. Это позволяет оценить последствия этого оператора или инструкции по отдельности и, таким образом, получить представление о поведении (или неправильном поведении) выполняющейся программы. Почти все современные Иды и отладчики поддерживают этот режим выполнения. Немного инструменты тестирования разрешить выполнение программ шаг за шагом, необязательно на любом исходный код уровень или Машинный код уровень в зависимости от доступности данных, собранных на компилировать время.

История

Система / 360 (Модель 65) операторская консоль, с значение регистра лампы и тумблеры и кнопки (середина рисунка).

Инструкция шагать или же одиночный цикл также упоминалось о родственных, более микроскопических, но теперь устаревших[сомнительный ] метод отладка код, остановив процессор Часы и вручную продвигая его по одному циклу за раз. Для этого необходимы три вещи:

  • Элемент управления, позволяющий останавливать часы (например, кнопка «Стоп»).
  • Второй элемент управления, который позволяет вручную продвигать остановленные часы на один цикл (например, переключатель «шаг инструкции» и кнопка «Пуск»).
  • Некоторые средства записи состояния процессора после каждого цикла (например, отображение регистров и памяти).

На IBM Система 360 В линейке процессоров, заявленной в 1964 году, эти возможности обеспечивались переключателями на передней панели, кнопками и блоками неоновых огней.

Другие системы, такие как PDP-11 предоставил аналогичные возможности, опять же на некоторых моделях. Точная конфигурация также зависела от модели. Было бы непросто предоставить такие возможности на LSI процессоры, такие как Intel x86 и Pentium линии, из-за соображений охлаждения[сомнительный ][требуется разъяснение ].

В качестве многопроцессорность стал более обычным явлением, такие методы имели бы ограниченную практичность, поскольку многие независимые процессы были бы остановлены одновременно. Это привело к разработке проприетарного программного обеспечения от нескольких независимых поставщиков, которые предоставляли аналогичные функции, но намеренно ограничивали точки останова и пошаговое выполнение инструкций для определенных прикладных программ в определенных адресных пространствах и потоки. Состояние программы (применительно к выбранному приложению / потоку) сохранялось для проверки на каждом шаге и восстанавливалось перед возобновлением, создавая впечатление единой пользовательской среды. Обычно этого достаточно для диагностики проблем на прикладном уровне.

Вместо использования физической кнопки остановки для приостановки выполнения - чтобы затем начать пошаговое выполнение прикладной программы, точка останова или запрос «Пауза» обычно должен быть установлен заранее, обычно в конкретном операторе / инструкции в программе (выбранной заранее или, альтернативно, по умолчанию, в первой инструкции).

Чтобы обеспечить полноэкранную «анимацию» программы, обычно требуется подходящее устройство ввода-вывода, такое как видеомонитор, которое может отображать разумную часть кода (например, в разобранном машинном коде или исходный код format) и укажите указатель (например, <==) на текущую инструкцию или строку исходного кода. По этой причине широкое использование этих полноэкранных аниматоров в мэйнфрейм миру пришлось ждать прибытия обработка транзакции системы - такие как CICS в начале 1970-х и изначально ограничивались отладкой прикладных программ, работающих в этой среде. Более поздние версии тех же продуктов обеспечивали межрегиональный мониторинг / отладку пакетных программ и других операционных систем и платформ.

С гораздо более поздним введением Персональные компьютеры примерно с 1980 года интегрированные отладчики могли быть более широко включены в этот однопользовательский домен и обеспечивали аналогичную анимацию путем разделения экрана пользователя и добавления «консоли» отладки для обеспечения взаимодействия с программистом.

Турбо-отладчик Borland автономный продукт, представленный в 1989 году, который обеспечивал полноэкранную анимацию программ для ПК. В более поздних версиях добавлена ​​поддержка объединения анимации с фактическими исходными строками, извлеченными во время компиляции.

Приемы программной анимации

Существует как минимум три различных программных метода для создания «анимации» во время выполнения программы.

  • приборы включает добавление дополнительного исходного кода в программу по адресу компилировать время вызывать аниматора до или после каждого оператора, чтобы остановить нормальное выполнение. Если анимируемая программа является интерпретируемым типом, например байт-код или же CIL переводчик (или IDE code) использует собственный встроенный код для обтекания целевого кода.
  • Индуцированное прерывание Этот метод включает принудительное установление точки останова в определенных точках программы во время выполнения, обычно путем изменения инструкции машинного кода в этой точке (это может быть вставленный системный вызов или преднамеренно недопустимая операция) и ожидания прерывания. Когда происходит прерывание, инструмент тестирования обрабатывает его, чтобы сообщить о состоянии программисту. Этот метод позволяет выполнение программы на полной скорости (до тех пор, пока не произойдет прерывание), но имеет тот недостаток, что большинство инструкций, ведущих к прерыванию, не отслеживаются инструментом.
  • Симулятор набора инструкций Этот метод относится к скомпилированным программам Машинный код в качестве входных `` данных '' и полностью имитирует инструкции хост-машины, контролирует код на предмет условных или безусловных контрольные точки или программист запросил запросы анимации «одного цикла» между каждым шагом.

Сравнение методов

Преимущество последнего метода заключается в том, что в скомпилированную программу не вносятся никакие изменения для обеспечения диагностики, и существует практически неограниченный объем расширенной диагностики, поскольку инструмент может дополнить диагностику хост-системы дополнительными функциями отслеживания программного обеспечения. Также с помощью этого метода можно автоматически диагностировать (и предотвращать) многие ошибки программы, в том числе: нарушения хранения и переполнение буфера. Обнаружение цикла также возможно с использованием автоматической трассировки инструкций вместе с пороговыми значениями количества инструкций (например, пауза после 10000 инструкций; отображение последних n инструкций). Второй метод изменяет только инструкцию, которая останавливается перед выполнением, а также может затем восстановить ее перед необязательным возобновлением с помощью Программист.Некоторые аниматоры опционально позволяют использовать более одного метода в зависимости от требований. Например, с использованием метода 2 для выполнения в определенной точке на полной скорости, а затем с использованием имитации набора команд после этого.

Дополнительные возможности

Аниматор может или не может сочетать в себе другие функции тестирования / отладки, такие как трассировка программы, дамп, условный точка останова и объем памяти внесение изменений, поток программы внесение изменений, покрытие кода анализ, обнаружение «горячей точки», обнаружение петли и т.п.

Примеры программных аниматоров

(На дату первого выпуска заказа)

Внешние ссылки и ссылки