stringtranslate.com

Отладчик

Winpdb отлаживает сам себя

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

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

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

Функции

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

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

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

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

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

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

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

Отладка путешествий во времени

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

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

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

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

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

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

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

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

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

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

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

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

Отладчики мэйнфреймов включают в себя:

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

Рекомендации

Цитаты

  1. ^ Аггарвал и Кумар, с. 302.
  2. ^ Аггарвал и Кумар 2003, с. 301.
  3. ^ Аггарвал и Кумар, стр. 307-312.
  4. ^ О'Каллахан, Роберт; Джонс, Крис; Фройд, Натан; Хьюи, Кайл; Нолл, Альберт; Партуш, Нимрод (2017). «Инженерная запись и воспроизведение расширенного технического отчета о возможности развертывания». arXiv : 1705.05937 [cs.PL].
  5. ^ Филип Классен; Отменить программное обеспечение. «Почему обратная отладка используется редко?». Обмен стеками программистов . Стек Биржа, Inc. Проверено 12 апреля 2015 г.
  6. ^ Аггарвал и Кумар 2003, стр. 299-301.

Источники

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