Отладчик
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Часть серии о |
Разработка программного обеспечения |
---|
Отладчик используемая или инструмент отладки — это компьютерная программа, для тестирования и отладки других программ («целевая» программа). Основное использование отладчика — запуск целевой программы в контролируемых условиях, которые позволяют программисту отслеживать ее выполнение и отслеживать изменения в компьютерных ресурсах, которые могут указывать на неисправный код. Типичные средства отладки включают в себя возможность запускать или останавливать целевую программу в определенных точках, отображать содержимое памяти, регистров ЦП или устройств хранения (например, дисковых накопителей), а также изменять содержимое памяти или регистров для ввода выбранных тестовых данных, которые могут быть причиной ошибочного выполнения программы.
В качестве альтернативы исследуемый код может выполняться на симуляторе набора команд (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, через графический интерфейс пользователя . Некоторые интерфейсы отладчика с графическим интерфейсом разработаны для совместимости с различными отладчиками только с интерфейсом командной строки, тогда как другие ориентированы на один конкретный отладчик.
Список отладчиков [ править ]
Некоторые широко используемые отладчики:
- Arm DTT , ранее известный как Allinea DDT
- API-интерфейс отладчика Eclipse , используемый в ряде IDE: Eclipse IDE (Java), Nodeclipse (JavaScript).
- Firefox JavaScript- отладчик
- GDB — отладчик GNU
- LLDB
- Отладчик Microsoft Visual Studio
- Радар2
- Избирательные ворота
- WinDbg
Более ранние отладчики мини-компьютеров включают:
- Метод динамической отладки (ДДТ)
- Инструмент онлайн-отладки (ODT)
Отладчики мэйнфреймов включают в себя:
См. также [ править ]
Ссылки [ править ]
Цитаты [ править ]
- ^ Аггарвал и Кумар, с. 302.
- ^ Аггарвал и Кумар 2003, с. 301.
- ^ Аггарвал и Кумар, стр. 307-312.
- ^ О'Каллахан, Роберт; Джонс, Крис; Фройд, Натан; Хьюи, Кайл; Нолл, Альберт; Партуш, Нимрод (2017). «Инженерная запись и воспроизведение расширенного технического отчета о возможности развертывания». arXiv : 1705.05937 [ cs.PL ].
- ^ Филип Классен; Отменить программное обеспечение. «Почему обратная отладка используется редко?» . Обмен стеками программистов . Стек Биржа, Inc. Проверено 12 апреля 2015 г.
- ^ Аггарвал и Кумар 2003, стр. 299-301.
Источники [ править ]
- Санджив Кумар Аггарвал; М. Сарат Кумар (2003). «Отладчики языков программирования». В Ю.Н. Шриканте; Прити Шанкар (ред.). Справочник по проектированию компиляторов: оптимизации и генерация машинного кода . Бока-Ратон, Флорида: CRC Press . стр. 295–327. ISBN 978-0-8493-1240-3 .
- Джонатан Б. Розенберг (1996). Как работают отладчики: алгоритмы, структуры данных и архитектура . Джон Уайли и сыновья . ISBN 0-471-14966-7 .
Внешние ссылки [ править ]
- Инструменты отладки для Windows
- OpenRCE: различные ресурсы и плагины отладчика
- IntelliTrace MSDN, Visual Studio 2015