Отладка программ Отладка Отладка (англ. debug) — этап разработки компьютерной программы, на котором обнаруживают и локализуют ошибки. Чтобы понять, где возникла ошибка, приходится: • Узнавать текущие значения переменных; • Выяснять, по какому пути выполнялась программа. Отладчик • Отладчик (дебаггер, англ. debugger) — компьютерная программа, предназначенная для поиска ошибок в других программах. • Отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д. Трассировка • Трассировка через «Trace Into»(Borland C++) «Step into»(Code::Blocks) позволяет пошагово выполнить программу, оператор за оператором. • Входить внутрь функций. Трассировка Трассировка Трассировка с перешагиванием • Трассировка с перешагиванием «Step Over»(Borland C++)/ «Next line»(Code::Blocks) выполняет трассировку, не осуществляя вход внутрь функций. • Трассировка происходит только внутри данной функции. Идти к месту курсора • Команда «Go to Cursor» (Borland C++)/ «Run to cursor»(Code::Blocks) исполняет программу до той точки, где стоит курсор в меню. Сброс программы При использовании пункта меню «Program reset», происходит сброс программы, что означает: • Остановку процесса отладки • Высвобождение задействованной памяти • Закрытие любых открытых программой файлов. Отладчик Borland C++ 3.1 Инспектирование Для вызова окна инспектирования необходимо открыть меню Debug => Inspect. Данное окно позволяет просматривать значения в элементах данных. Инспектирование В Borland C++ можно инспектировать следующее: • простые типы данных (как char или unsigned long) • массивы • указатели • структуры • классы • типы • объединения • функции Инспектирование Стек вызовов • Команда «Call Stack» вызывает диалоговое окно, в котором показана последовательность вызванных функций в разрабатываемой программе на данном шаге. Стек вызовов #include <stdio.h> int func3(int c) { return c++; } int func2(int b) { return func3(++b); } int func1(int a) { return func2(++a); } main() { int a = 0; printf("%d\n", func1(a)); return 0; } Стек вызовов Наблюдения • Наблюдения позволяют отслеживать данные, подвергающиеся отладке. • В меню «Watches» возможно добавить, удалить и отредактировать наблюдаемые данные. Наблюдения Точки останова • Точка останова (англ. breakpoint) — это преднамеренное прерывание выполнения программы, при котором выполняется вызов отладчика. После перехода к отладчику, программист может исследовать состояние программы (состояние памяти, регистров процессора, стека и т. п.), с тем чтобы определить, правильно ли ведёт себя программа. После остановки в отладчике, программа может быть завершена либо продолжена с того же места где произошёл останов. Отладчик Code::Blocks Call stack Watches