Jump to content

Отладчик

(Перенаправлено из интерфейса отладчика )
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 , отладчику, возможно, придется динамически переключать режимы, чтобы приспособиться к изменениям в языке по мере их возникновения.

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

[ редактировать ]

Отладка часто используется для незаконного взлома или пиратства программного обеспечения, что обычно является незаконным, даже если оно выполняется незлонамеренно. Crackme — это программы, специально разработанные для взлома или отладки. Эти программы позволяют тем, у кого есть отладчики, практиковать свои навыки отладки, не попадая в неприятности с законом.

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

[ редактировать ]

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

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

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

См. также

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

Источники

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4255b2a0c62bebb889a1878b1aa0de57__1723086840
URL1:https://arc.ask3.ru/arc/aa/42/57/4255b2a0c62bebb889a1878b1aa0de57.html
Заголовок, (Title) документа по адресу, URL1:
Debugger - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)