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

advertisement
Отладка программ
Отладка
Отладка (англ. 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
Download