Что такое программа отладчик

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

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

ABAP отладчик. Отладка ABAP программы SAP.

За методами, которые мы показывали до сих пор, стоит неустановленное предположение: как только мы запустим код, он будет работать до завершения (только с паузой для приема входных данных) без возможности вмешаться и проверить результаты программы в любой момент времени, какой мы захотим.

Однако что, если бы мы смогли убрать это предположение? К счастью, мы можем. Большинство современных IDE поставляются со встроенным инструментом, называемым отладчиком, который предназначен именно для этого.

Отладчик

Отладчик – это компьютерная программа, которая позволяет программисту контролировать выполнение программы и проверять ее состояние во время выполнения программы. Например, программист может использовать отладчик для выполнения программы построчно, по ходу проверяя значения переменных. Сравнивая фактические значения переменных с ожидаемыми или наблюдая за ходом выполнения кода, отладчик может существенно помочь в отслеживании семантических (логических) ошибок.

Возможности отладчика двойственные: способность точно контролировать выполнение программы и возможность просматривать (и при желании изменять) состояние программы.

Ранние отладчики, такие как gdb, были отдельными программами с интерфейсами командной строки, где программисту приходилось вводить загадочные команды, чтобы заставить их работать. Более поздние отладчики (такие как ранние версии Turbo Debugger от Borland) всё еще были автономными, но поставлялись со своими собственными «графическими» интерфейсами для облегчения работы с ними. Большинство современных IDE, доступных в наши дни, имеют встроенный отладчик, то есть отладчик использует тот же интерфейс, что и редактор кода, поэтому вы можете отлаживать программу, используя ту же среду, которую вы используете для написания кода (вместо того, чтобы переключаться между программами).

Как найти ошибку в коде Работа с отладчиком

Практически все современные отладчики содержат один и тот же стандартный набор базовых функций, однако единообразия в том, как организованы меню для доступа к этим функциям, нет, и еще меньше единообразия в сочетаниях клавиш. Хотя в наших примерах будут использоваться скриншоты Microsoft Visual Studio (и мы расскажем, как делать всё в Code::Blocks), у вас не должно возникнуть проблем с выяснением того, как получить доступ к каждой обсуждаемой нами функции, независимо от того, в какой среде разработки вы находитесь, даже если вашу IDE, мы не рассматриваем явно.

Читайте также:
Лучшие программы для 3d моделирования

Остаток этой главы будет посвящен изучению того, как использовать отладчик.

Совет

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

Предупреждение

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

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

Для пользователей Code::Blocks

Если вы используете Code::Blocks, ваш отладчик может быть настроен правильно, а может и нет. Давайте, проверим.

Сначала перейдите в меню Settings (Настройки) → Debugger (Отладчик). Затем откройте дерево отладчика GDB/CDB (GDB/CDB debugger) слева и выберите Default (По умолчанию). Должно открыться диалоговое окно, которое выглядит примерно так:

Рисунок 1 Настройки отладчика в Code::Blocks

Если вы видите большую красную полосу на месте Executable path (Путь к исполняемому файлу), то вам нужно найти отладчик. Для этого нажмите кнопку … справа от поля Executable path. Затем найдите файл gdb32.exe в вашей системе – мой был в C:Program Files (x86)CodeBlocks MinGWbingdb32.exe . Затем нажмите ОК.

Для пользователей Code::Blocks

Были сообщения о том, что встроенный отладчик Code::Blocks (GDB) может иметь проблемы с распознаванием некоторых путей к файлам, содержащих пробелы или неанглийские символы. Если во время прохождения этих уроков отладчик у вас работает со сбоями, то это может быть причиной.

Пошаговое выполнение

1.4. Отладчики и отладка программ

Еще одним модулем системы программирования, функции которого тесно связаны с выполнением программы, является отладчик.

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

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

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Источник: studfile.net

Отладка программ

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

Рисунок 1. Пример системы отладки программного обеспечения для микроконтроллеров.

До недавнего времени внутрисхемный эмулятор являлся отдельным устройством, подключаемым к разрабатываемой плате вместо микроконтроллера. В состав современных микроконтроллеров часто входит встроенный внутрисхемный эмулятор. При этом наиболее удобным интерфейсом для связи с компьютером является JTAG интерфейс, хотя некоторые фирмы-производители микросхем предлагают свой интерфейс.

При использовании интегрированной среды программирования предоставляется удобный интерфейс, позволяющий легко отлаживать разрабатываемую программу. В настоящее время стандартом де-факто стал интерфейс, похожий на программную оболочку Visual C. Пример внешнего вида такой программной оболочки приведЈн на рисунке 2.

Рисунок 2. Пример внешнего вида отладчика интегрированной системы отладки программного обеспечения.

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

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

Так как объектные форматы различных трансляторов несколько отличаются друг от друга, то в качестве входного файла используется загрузочный модуль в двоичном или гексадецимальном формате. В этих форматах отладочная информация полностью отсутствует, поэтому отладку в таких программах можно вести только с помощью встроенного дизассемблера и распечатанного (или открытого в другом окне) листинга программы. Естественно, что это ещЈ более неудобный способ отладки по сравнению с использованием интегрированной среды программирования и внутрисхемного эмулятора.

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

Читайте также:
Через какую программу делать проект на компьютере

При написании достаточно простых программ иногда для отладки программ используют только этот последний этап тестирования. Однако обнаружение, поиск и устранение ошибок при использовании только этого метода очень трудоЈмок! Это то же самое, что пытаться настроить аппаратуру без использования приборов!

Способы отладки программ.

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

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

Для отладки программ обычно применяют три способа:

  1. Пошаговая отладка программ с заходом в подпрограммы;
  2. Пошаговая отладка программ с выполнением подпрограммы как одного оператора;
  3. Выполнение программы до точки останова.

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

Если в программе имеются уже отлаженные подпрограммы, то подпрограмму можно рассматривать, как один оператор программы и воспользоваться вторым способом отладки программ.

Если в программе существует достаточно большой участок программы, уже отлаженный ранее, то его можно выполнить, не контролируя переменные, на которые он воздействует. Использование точек останова позволяет пропускать уже отлаженную часть программы. Точка останова устанавливается в местах, где необходимо проверить содержимое переменных или просто проконтролировать, передаЈтся ли управление данному оператору.

Практически во всех отладчиках поддерживается это свойство (а также выполнение программы до курсора и выход из подпрограммы). Затем отладка программы продолжается в пошаговом режиме с контролем локальных и глобальных переменных, а также внутренних регистров микроконтроллера и напряжений на выводах этой микросхемы.

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

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

Практически все отладчики позволяют проконтролировать содержимое рабочих регистров текущего банка.

Источник: computer-museum.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru