Как выполнить отладку программы

Программа gdb — это популярный отладчик для программ, написанных на языке программирования Си и С++. Отладчик позволяет выполнить программу пошагово, посмотреть значения всех переменных на каждом из этапов выполнения, а если это необходимо, то и дизассемблировать код и посмотреть состояние регистров процессора.

В сегодняшней статье мы рассмотрим как пользоваться gdb для отладки и анализа выполнения программ, написанных на Си. Попытаемся разобраться с основными возможностями программы.

Как пользоваться gdb

1. Установка gdb

Обычно, отладчик устанавливается вместе с другими инструментами для сборки программного обеспечения. Для установки всего необходимого в Ubuntu или Debian достаточно выполнить:

sudo apt install build-essential

Для того чтобы установить отладчик отдельно, выполните:

sudo apt install gdb

В CentOS или Fedora команда установки будет выглядеть следующим образом:

sudo dnf install gdb

А для Arch Linux надо выполнить:

21. Отладка программ [Универсальный программист]

sudo pacman -S gdb

Теперь отладчик gdb установлен и вы можете его использовать.

2. Компиляция программы

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

#include
int main() int var1 = 0;
int var2 = 2;
char greeting[] = «Hello from losstn»;
printf(«%s», greeting);
>

Для того чтобы всё необходимое было включено в исполняемый файл, программу надо собрать с опцией -g. В данном случае команда будет выглядеть вот так:

gcc -g -o program program.c

Затем вы можете её выполнить:

3. Запуск отладчика

Для того чтобы запустить программу достаточно передать путь к ней отладчику. Какие-либо опции указывать не обязательно:

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

  • break или b — создание точки останова;
  • info или i — вывести информацию, доступные значения: break, registers, frame, locals, args;
  • run или r — запустить программу;
  • continue или c — продолжить выполнение программы после точки останова;
  • step или s — выполнить следующую строчку программы с заходом в функцию;
  • next или n — выполнить следующую строчку без захода в функцию;
  • print или p — вывести значение переменной;
  • backtrace или bt — вывести стек вызовов;
  • x — просмотр содержимого памяти по адресу;
  • ptype — просмотр типа переменной;
  • h или help — просмотр справки по команде;
  • q или quit — выход из программы.

4. Запуск программы

Для того чтобы запустить программу надо воспользоваться командой run в консоли gdb. Просто выполните:

Пошаговая отладка программ с выводом переменных | О самом простом | Program DEBUG

И программа будет запущена и выполнена. Если вам надо передать программе какие-либо аргументы, то следует их передать команде run, например:

(gdb) run arg1 arg2

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

Программа сообщает на какой строчке исходного кода возникла проблема. Чтобы посмотреть весь исходник выполните команду list:

Для того чтобы вызвать ошибку Segmentation Fault и проверить как это работает можете добавить в программу такие строки и перекомпилировать её:

char *buffer = malloc(sizeof(char) * 10);
while(1) *(++buffer) = ‘c’;
>

Тут мы выделяем из памяти массив символов размером 10 элементов и заполняем его и память, которая находится за ним символами «с», пока программа не упадёт.

5. Точки останова

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

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

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

Например, давайте установим точку останова на восьмой строчке исходника:

Теперь, когда вы запустите программу на выполнение она остановиться в указанной точке:

Для того чтобы выполнить следующую строчку без входа в функцию используйте команду next:

Тогда выполнится следующая строка кода в программе. Если надо войти в функцию и посмотреть что в ней происходит следует использовать команду step:

Для отладки циклов можно устанавливать точки останова на основе условия, например, на 11-той строке, если значение переменной var1 будет 20:

(gdb) break 11 if var1==20

Чтобы этот пример заработал добавьте в код цикла следующую строчку, как на снимке:

Посмотреть все установленные точки останова можно такой командой:

6. Вывод информации

Сами по себе точки останова не очень полезны, но после каждой остановки программы можно посмотреть полностью её состояние и значения всех переменных, а это уже намного интереснее. Для просмотра информации используется команда info, а для вывода значения конкретной переменной — print. Для того чтобы посмотреть значения всех локальных переменных выполните:

(gdb) info locals

А для вывода значений аргументов функции:

Вывести значение определённой переменной можно с помощью print:

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

(gdb) print var1+30

Имя временной переменной, куда были записаны данные отображается перед самим результатом, например, в последней команде это $2. Теперь можно ещё раз вывести это значение:

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

7. Изменение информации

С помощью команды set можно изменить значение переменной прямо во время выполнения программы. Например:

(gdb) break 7
(gdb) run
(gdb) set var2 = 20
(gdb) print var2

8. Вывод типа

С помощью команды ptype вы можете вывести тип переменной. Например:

(gdb) break 7
(gdb) run
(gdb) ptype var2

9. Просмотр адресов

Ещё интереснее исследовать как программы на Си работают с памятью. Команда print может выводить не только выводить значения переменных, но и их адреса в памяти. Приведите программу к такому виду и перекомпилируйте её:

#include
#include
#include
int main(int argc, char *argv[]) int var1 = 0;
int var2 = 2;
char *buffer = malloc(sizeof(char) * 10);
while(var1 < 10)var1++;
*(++buffer) = ‘c’;
>
printf(«%sn», buffer);
>

Запустите отладчик и установите точку останова на девятой строке и запустите программу:

Теперь вы можете вывести адреса всех переменных в памяти с помощью символа argc
(gdb) print buffer
(gdb) print buffer

Как видите, аргументы функции находятся в одном месте, локальные переменные в другому, но не очень далеко, а во память выделенная из кучи, на которую указывает указатель buffer — совсем далеко. Можете поменять программу и поэкспериментировать с разным количеством переменных.

10. Просмотр памяти

С помощью команды x или eXamine можно посмотреть содержимое памяти, по определённому адресу. Например, смотрим содержимое переменной var2:

Если вы не знаете адрес переменной, можно передать её имя с оператором https://losst.pro/kak-polzovatsya-gdb» target=»_blank»]losst.pro[/mask_link]

Отладка, использование среды для отладки программ

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

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

Читайте также:
Какая программа для обновления айфона

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

Типы ошибок. Ошибки в программе делятся на три категории:

Ошибки компиляции– возникают, когда компилятор не может интерпретировать введённый текст. Некоторые ошибки компиляции обнаруживаются при вводе, а другие – перед выполнением программы. Такие ошибки легко определить и исправить, посколькуVBAвыявляет их автоматически, а сами ошибки очевидны.

Примечание.VBAавтоматически компилирует программу каждый раз при запуске на выполнение после внесения изменений. Можно также запустить компиляцию командойОтладка – Компилировать.

Ошибки выполнения– возникают при выполнении программы после успешной компиляции. Их причиной обычно является отсутствие данных или неправильная информация, введённая пользователем. Такие ошибки идентифицируютсяVBAс указанием инструкции, при выполнении которой произошла ошибка. Для исправления таких ошибок обычно приходится выводить значения переменных или другие данные, которые влияют на успешное выполнение программы.

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

Средства отладки. ВVBAимеется большое количество средств, предназначенных для отладки программ. К ним относятся: использование оператораOption Explicit, пошаговое выполнение программы, работа в режиме прерывания, использование точек останова, вывод значений переменных.

Использование Option Explicit. Данный оператор описания требует явного задания переменных в программах. При его использовании возникает ошибка компиляции при неправильном написании имени переменной или использовании неописанной переменной. Кроме того, явное описание переменных позволяет обойтись без использования типа данныхVariantи связанных с его использованием ошибок при неявном приведении типов данных.

Пошаговое выполнение программы. Этот режим служит для локализации ошибок в теле программы. Для его запуска используются команды меню, клавиатура или панель инструментовОтладка, отображаемая командойВид — Панели инструментов — Отладка. В меню и на панели инструментов имеются четыре команды (кнопки) для выполнения программы в пошаговом режиме.

  • Команда Отладка – Шаг с заходом(клавиша F8>) позволяет выполнить одну строку программы и перейти к следующей. Если следующая строка – вызов процедуры, то происходит переход к первому выполняемому оператору этой процедуры.
  • Команда Отладка – Шаг с обходом(клавиши Shift+F8>) также выполняет одну строку программы, но если строкой является вызов процедуры, то она выполняется как одна инструкция. Данная команда используется, если известно, что эта процедура работает правильно.
  • Команда Отладка – Шаг с выходом(клавиши Ctrl+Shift+F8>) заканчивает выполнение текущей процедуры и останавливается на следующей после вызова текущей процедуры инструкции в вызывающей подпрограмме.
  • Команда Отладка – Выполнить до текущей позиции(клавиши Ctrl+F8>) выполняет программу от текущей до выбранной инструкции. Перед выбором данной команды требуется установить курсор в окне модуля на требуемую позицию.
  • При нажатии кнопки Отладкав окне сообщения об ошибке выполнения.
  • При прерывании работы программы нажатием клавиш Ctrl+Break>. Текущая строка программы выделяется в окне модуля.
  • По достижении точки останова.
  • По достижении оператора Stop.
  • При пошаговом выполнении программы.
  • Вывести значение переменной.
  • Вычислить выражение в окне отладки.
  • Сбросить программу
  • Выполнить программу в пошаговом режиме.
  • Продолжить выполнение программы.
  • При установленном флажке Подсказки значений переменныхв окнеСервис – Параметрыдостаточно переместить указатель мыши на требуемую переменную для отображения имени и значения переменной во всплывающей подсказке.
  • Выбрать команду Отладка – Контрольное значение(нажать клавиши Shift+F9>) для вывода диалогового окнаКонтрольное значение. При этом курсор должен находиться возле переменной, значение которой надо контролировать. В окнеКонтрольное значениеотображается контекст (имя модуля и процедуры), выделенное выражение (переменная) и кнопкиДобавитьиОтмена. При нажатии кнопкиДобавить откроется окноКонтрольные значения, содержащее имена переменных (выражения), их значения, тип данных и контекст.
  • Для добавления других контрольных значений используется команда Отладка – Добавить контрольное значение.
  • Выбрать команду Вид – Окно локальных переменных. Откроется окноЛокальные переменные, в котором в режиме прерывания отображаются имена, значения и типы всех переменных модуля.

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

Как выполнить отладку JavaScript приложения

Как выполнить отладку JavaScript приложения

15.10.2014

Читайте также:
В какой программе создать пригласительные на свадьбу

572

Рейтинг: 4 . Проголосовало: 1
Вы проголосовали:
Для голосования нужно авторизироваться

advertisement advertisement

Введение

Данная статья будет полезна web разработчикам, которые начинают работать с языком JavaScript и знакомятся с инструментами разработки, встроенными в браузер. Умение «дебажить» JavaScript приложение является очень важным для веб разработчика, поскольку позволяет быстро найти причину ошибки в сценарии.

Отладка в Google Chrome

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

advertisement advertisement

Во всех современных браузерах есть инструменты, позволяющие разработчику анализировать работу веб приложения, в том числе и выполнять отладку JavaScript кода. Для того, чтобы открыть инструменты веб разработчика, в большинстве браузеров используется клавиша F12. В данной статье будет рассмотрена отладка JavaScript приложения на примере инструмента Web Inspector в браузере Google Chrome.

Ниже приведен HTML код страницы с простым сценарием, который будет анализироваться с помощью Web Inspector.

var div = document.getElementById( «mydiv» );

for ( var i = 0; i < 10; i++)

Тема связана со специальностями:

Задача данного сценария — создать ряд цифр от 0 до 9-ти и отобразить их в элементе div на странице. Но код не срабатывает, и мы попробуем найти проблему, выполнив отладку.

Запуск Web Inspector и переключение в окно отладчика.

Нажав на клавишу F12, мы получаем следующее окно в Google Chrome.

Клавиша F12 в Google Chrome

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

Окно отладки делится на три панели (отмечены на изображении цифрами):

1 – Панель файлов, подключенных к текущей странице, в которых есть JavaScript код.

2 – Панель, в которой будет отображаться JavaScript код выбранного файла.

3 – Панель с дополнительными настройками, упрощающими отладку.

Установка точки останова или breakpoint

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

Точка останова (breakpoint) – метка, которая указывает отладчику, на каком этапе выполнения приложения нужно сделать паузу.

Видео курсы по схожей тематике:

HTML5 Web Components

HTML5 Web Components

HTML5  CSS3 Углубленный</p><p><img decoding=Пошаговая отладка JavaScript

После установки breakpoint нужно начать отладку. Для этого достаточно обновить страницу (F5). При наличии точки останова сценарий остановился на строке №9 (об этом свидетельствует синяя подсветка строки).

Точка останова (breakpoint)

С помощью горячей клавиши F10 можно пошагово выполнять приложение и отследить значения переменных. При первом нажатии на F10 выполнение переходит на следующую строку кода и, наведя курсор на переменную div, мы сможем увидеть значение этой переменной. Отладчик показывает, что в переменной находится значение null.

Бесплатные вебинары по схожей тематике:

Firebase. Организация удаленной работы с данными.

Firebase. Организация удаленной работы с данными.

Как стать Full-Stack разработчиком

Как стать Full-Stack разработчиком

AWS для веб разработчиков

AWS для веб разработчиков

Пошаговая отладка JavaScript

Ошибка на строке №9 вызвана отсутствием инициализации переменной div должным образом. После внимательного изучения этой строки мы находим ошибку – неправильно указанный id элемента “myDiv”.

Источник: itvdn.com

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