Отладчик - Debugger

Winpdb сама отладка

А отладчик или инструмент отладки это компьютерная программа использовал к тестовое задание и отлаживать другие программы («целевая» программа). Основное применение отладчика - запуск целевой программы в контролируемых условиях, которые позволяют программисту отслеживать выполняемые операции и отслеживать изменения в ресурсах компьютера (чаще всего в областях памяти, используемых целевой программой или операционной системой компьютера), которые могут указывать на код неисправности. Типичные средства отладки включают возможность запускать или останавливать целевую программу в определенных точках, отображать содержимое памяти, регистров ЦП или запоминающих устройств (например, дисковых накопителей), а также изменять содержимое памяти или регистров для ввода выбранных тестовых данных, которые могут быть причиной неправильного выполнения программы.

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

А "ловушка "происходит, когда программа не может нормально продолжаться из-за ошибка программирования или неверные данные. Например, программа могла попытаться использовать инструкцию, недоступную в текущей версии ЦПУ или пытались получить доступ к недоступному или защищенный объем памяти. Когда программа «перехватывает» или достигает заранее заданного условия, отладчик обычно показывает местоположение в исходном коде, если это отладчик исходного уровня или символический отладчик, теперь часто можно увидеть в интегрированные среды разработки. Если это низкоуровневый отладчик или машинный отладчик он показывает линию в разборка (если он также не имеет онлайн-доступа к исходному коду и может отображать соответствующий раздел кода из сборки или компиляции).

особенности

Обычно отладчики предлагают обработчик запросов, преобразователь символов, интерпретатор выражений и интерфейс поддержки отладки на верхнем уровне.[1] Отладчики также предлагают более сложные функции, такие как запуск программы. шаг за шагом (пошаговый или программа анимация ), остановка (ломка) (приостанавливает программу для проверки текущего состояния) в некотором событии или указанной инструкции с помощью точка останова, и отслеживание значений переменных.[2] Некоторые отладчики имеют возможность изменять состояние программы во время ее работы. Также можно продолжить выполнение в другом месте программы, чтобы обойти сбой или логическую ошибку.

Те же функции, которые делают отладчик полезным для исправления ошибок, позволяют использовать его как взлом программного обеспечения инструмент для уклонения защита от копирования, управление цифровыми правами, и другие функции защиты программного обеспечения. Это часто также делает его полезным в качестве общего инструмента проверки, покрытие неисправностей, и анализатор производительности особенно если длина пути инструкции показаны.[3] Первые микрокомпьютеры с дисковыми хранилищами часто выигрывали от возможности диагностики и восстановления поврежденных записей данных каталогов или реестра, восстановления файлов, помеченных как удаленные, или взлома защиты файлов паролем.

Большинство основных механизмов отладки, таких как GDB и dbx, предоставить консольную интерфейсы командной строки. Интерфейсы отладчика - популярные расширения для отладчиков, которые предоставляют IDE интеграция программа анимация, и возможности визуализации.

Запись и воспроизведение отладки

Запись и воспроизведение отладки,[4] также известный как «запись полета программного обеспечения» или «запись выполнения программы», фиксирует изменения состояния приложения и сохраняет их на диск по мере выполнения каждой инструкции в программе. Затем запись можно воспроизводить снова и снова и отлаживать в интерактивном режиме для диагностики и устранения дефектов. Отладка с записью и воспроизведением очень полезна для удаленной отладки и для устранения прерывистых, недетерминированных и других трудно воспроизводимых дефектов.

Обратная отладка

Некоторые отладчики включают функцию под названием "обратная отладка", также известная как" историческая отладка "или" обратная отладка ". Эти отладчики позволяют выполнять пошаговое выполнение программы назад во времени. Различные отладчики включают эту функцию. Microsoft Visual Studio (Выпуск 2010 Ultimate, 2012 Ultimate, 2013 Ultimate и 2015 Enterprise) предлагает обратную отладку IntelliTrace для C #, Visual Basic .NET и некоторых других языков, но не C ++. Обратные отладчики также существуют для C, C ++, Java, Python, Perl и других языков. Некоторые из них с открытым исходным кодом; некоторые - проприетарное коммерческое программное обеспечение. Некоторые обратные отладчики замедляют цель на порядки, но лучшие обратные отладчики вызывают замедление в 2 раза или меньше. Обратная отладка очень полезна для определенных типов проблем, но пока еще широко не используется.[5]

Зависимость от языка

Некоторые отладчики работают на одном конкретном языке, в то время как другие могут прозрачно обрабатывать несколько языков. Например, если основная целевая программа написана на КОБОЛ но звонки язык ассемблера подпрограммы и PL / 1 подпрограмм, отладчику, возможно, придется динамически переключать режимы, чтобы приспособиться к изменениям языка по мере их появления.

Защита памяти

Некоторые отладчики также включают защиту памяти, чтобы избежать нарушения хранения такие как переполнение буфера. Это может быть чрезвычайно важно в обработка транзакции среды, в которых память динамически выделяется из «пулов» памяти для каждой задачи.

Аппаратная поддержка для отладки

Большинство современных микропроцессоров имеют по крайней мере одну из этих функций. Конструкция процессора чтобы упростить отладку:

  • Аппаратная поддержка одношаговой программы, такой как флаг ловушки.
  • Набор инструкций, соответствующий Требования к виртуализации Попека и Голдберга упрощает написание программного обеспечения отладчика, которое работает на том же процессоре, что и отлаживаемое программное обеспечение; такой ЦП может выполнять внутренние циклы тестируемой программы на полной скорости, оставаясь при этом под контролем отладчика.
  • Внутрисистемное программирование позволяет внешнему аппаратному отладчику перепрограммировать тестируемую систему (например, добавляя или удаляя точки останова команд). Многие системы с такой поддержкой ISP также имеют поддержку отладки другого оборудования.
  • Аппаратная поддержка кода и данных контрольные точки, например, компараторы адресов и компараторы значений данных или, если требуется значительно больше работы, ошибка страницы оборудование.[6]
  • JTAG доступ к интерфейсам аппаратной отладки, таким как ARM архитектура процессоров или с помощью Nexus набор команд. Процессоры, используемые во встроенных системах, обычно имеют обширную поддержку отладки JTAG.
  • Микроконтроллеры всего с шестью выводами должны использовать заменители с небольшим количеством выводов для JTAG, такие как БДМ, Spy-Bi-Wire, или debugWIRE на Atmel AVR. DebugWIRE, например, использует двунаправленную передачу сигналов на выводе RESET.

Интерфейсы отладчика

Некоторые из наиболее эффективных и популярных отладчиков реализуют только простой интерфейс командной строки (CLI) - часто для максимизации переносимость и минимизировать потребление ресурсов. Разработчики обычно рассматривают возможность отладки через графический интерфейс пользователя (GUI) проще и продуктивнее.[нужна цитата ] Это причина появления визуальных интерфейсов, которые позволяют пользователям отслеживать и управлять подчиненными отладчиками, работающими только с CLI, через графический интерфейс пользователя. Некоторые интерфейсы отладчика с графическим интерфейсом пользователя разработаны для совместимости с различными отладчиками, работающими только с интерфейсом командной строки, в то время как другие нацелены на один конкретный отладчик.

Список отладчиков

Некоторые широко используемые отладчики:

Ранее миникомпьютер отладчики включают:

Ранее Мэйнфрейм Отладчики включают (в порядке выпуска):

  • 1974 OLIVER CICS ТЕСТ / ОТЛАДКА
  • ПАКЕТНЫЙ ТЕСТ / ОТЛАДКА СИМОНА 1980 г.
  • 1985 CA / EZTEST
  • 1990 XPEDITER и Expediter CICS

Текущие отладчики мэйнфреймов:

  • Инструмент отладки для z / OS [7]
  • XPEDITER и Expediter CICS
  • z / XDC [8]

Смотрите также

использованная литература

  • Санджив Кумар Аггарвал; М. Сарат Кумар (2003). «Отладчики языков программирования». В Ю.Н. Срикант; Прити Шанкар (ред.). Справочник по проектированию компиляторов: оптимизация и создание машинного кода. Бока-Ратон, Флорида: CRC Press. С. 295–327. ISBN  978-0-8493-1240-3.
  • Джонатан Б. Розенберг (1996). Как работают отладчики: алгоритмы, структуры данных и архитектура. Джон Уайли и сыновья. ISBN  0-471-14966-7.

Цитаты

  1. ^ Аггарвал и Кумар, стр. 302.
  2. ^ Аггарвал и Кумар 2003, стр. 301.
  3. ^ Аггарвал и Кумар, стр. 307-312.
  4. ^ О'Каллахан, Роберт; Джонс, Крис; Фройд, Натан; Хьюи, Кайл; Нолл, Альберт; Партуш, Нимрод (2017). «Техническая запись и воспроизведение расширенного технического отчета о возможности развертывания». arXiv:1705.05937 [cs.PL ].
  5. ^ Филип Классен; Отменить программное обеспечение. "Почему редко используется обратная отладка?". Обмен стеком программистов. Stack Exchange, Inc. Получено 12 апреля 2015.
  6. ^ Аггарвал и Кумар 2003, стр. 299-301.
  7. ^ "IBM Debug Tool для z / OS, V13.1" (PDF). IBM. Получено 2015-05-07.
  8. ^ "IBM Global Solutions Directory - расширенный контроллер отладки z / XDC z2.1". Получено 2015-05-29.

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