Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Сама отладка Winpdb

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

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

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

Особенности [ править ]

Обычно отладчики предлагают обработчик запросов, преобразователь символов, интерпретатор выражений и интерфейс поддержки отладки на верхнем уровне. [1] Debuggers также предлагает более сложные функции , такие как запуск программы шага за шагом ( пошаговым или анимационную программу ), остановку ( нарушение ) (пауза программы для проверки текущего состояния) на каком - то событии или указанную команду с помощью точка останова и отслеживание значений переменных. [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]

Зависимость от языка [ править ]

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

Защита памяти [ править ]

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

Аппаратная поддержка для отладки [ править ]

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

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

Интерфейсы отладчика [ править ]

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

Список отладчиков [ править ]

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

  • Arm DTT , ранее известный как Allinea DDT
  • API отладчика Eclipse, используемый в ряде IDE: Eclipse IDE (Java), Nodeclipse (JavaScript)
  • Отладчик JavaScript в Firefox
  • GDB - отладчик GNU
  • LLDB
  • Отладчик Microsoft Visual Studio
  • Radare2
  • TotalView
  • Валгринд
  • WDW, отладчик OpenWatcom
  • WinDbg

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

  • Техника динамической отладки (ДДТ)
  • Инструмент онлайн-отладки (ODT)

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

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

Внешние ссылки [ править ]

  • Инструменты отладки для Windows
  • OpenRCE: различные ресурсы и надстройки отладчика
  • IntelliTrace MSDN, Visual Studio 2015