- •. Отладка компьютерных программ
- •Отладка программ
- •Метод поиска дефекта, основанный на научном методе
- •Инструменты отладки программ
- •Утилиты сравнения исходного кода (diff)
- •Утилиты сравнения исходного кода (diff) (пример)
- •Утилиты сравнения исходного кода (diff) (пример)
- •Системы управления версиями
- •Типичный порядок работы с системой управления версиями
- •Существующие системы управлениями версиями
- •Хостинг систем управления версиями
- •Компилятор
- •Процесс преобразования исходных кодов в машинные кода из исходного
- •Советы по устранению синтаксических ошибок
- •Советы по устранению синтаксических ошибок
- •Советы по устранению синтаксических ошибок
- •Советы по устранению синтаксических ошибок
- •Советы по устранению
- •Советы по устранению синтаксических
- •Советы по устранению синтаксических ошибок
- •Отладка с помощью отладочных сообщений
- •Использование отладочных сообщений
- •Технические аспекты, связанные с отладочными сообщениями
- •Программные отладчики
- •Программные отладчики (2)
- •В защиту программных отладчиков
- •Стандарт оформления кода (Code convention)
- •Существующие стандарты оформления кода на языке Си
- •Соглашение об оформлении кода на языке Си
- •Отступы (http://en.wikipedia.org/wiki/Indent_style)
- •Отступы (правила использования)
- •Отступы
- •Расположение фигурных скобок (http://en.wikipedia.org/wiki/Indent_style)
- •Расположение фигурных скобок (Исключение 1)
- •Расположение фигурных скобок (Исключение 2)
- •Имена переменных
- •Комментарии
Отладка с помощью отладочных сообщений
•Отладка программы требует полного понимания процессов, происходящих в процессе ее выполнения.
•Одним из простейших в вместе с тем эффективных инструментов, которые позволяют отследить и лучше понять работу программы является журналирование программы.
•Журналирование предполагает вывод на экран (или в файл) информации о событиях, возникающих в программе, и промежуточном состоянии программы, например: факт вызова функции и данные о ее аргументах, содержимое переменных и т.п.
21
Использование отладочных сообщений
•Отладочные сообщения должны находиться в ключевых узлах программы и позволять отследить ход ее выполнения.
•В случае поиска дефекта необходимо размещение дополнительных выводов, позволяющих детализировать информацию о потенциально дефектных фрагментах кода.
•Необходимо соблюдать баланс между количеством выводимой информации и ее качеством, так как при визуальном осмотре важная информация может "утонуть" в потоке ненужных сообщений.
22
Технические аспекты, связанные с отладочными сообщениями
•Отладочные сообщения могут сами по себе содержать ошибки.
•Вывод на экран буферизируется построчно, т.е. сообщения лежат в буферах до тех пор, пока не обнаружен символ '\n' (Enter – перевод каретки).
•В случае фатальной ошибки, приводящей к аварийному завершению программы (наиболее распространена ошибка сегментации (Segmentation Fault)
отладочные сообщения, находящиеся в буферах, не будут выведены.
•Часто бывает удобно иметь возможность оперативно отключать и включать отладочные выводы.
23
Программные отладчики
Современные отладчики непрерывно совершенствуются. Они позволяют:
•прерывать выполнение программы на некоторой строке или при достижении конкретной строки n раз, а также при изменении некоторой переменной или присвоении ей конкретного значения;
•возобновлять выполнение программы;
•производить трассировку программы, т.е. выполнять ее пошагово;
24
Программные отладчики (2)
•выполнять исследование данных, в частности анализировать значения переменных в любой момент выполнения программы;
•изменять данные, в частности значения переменных;
•отображать ход выполнения программы с привязкой к исходным кодам;
•просматривать цепочку вызовов функций, т.е. содержимое стека вызовов;
•подключаться к выполняющейся программе;
25
В защиту программных отладчиков
"… Любой эффективный инструмент можно использовать правильно и неправильно. Отладчик — не исключение...
Отладчик не заменит грамотного рассуждения. Но иногда никакие мысли не заменят хороший отладчик. Наиболее эффективная комбинация — ясный ум и хороший отладчик ..."
Макконнел, С. Совершенный код.
26
Стандарт оформления кода (Code convention)
Стандарт оформления кода (стандарт кодирования, стиль программирования) (англ. coding standards, coding convention
или programming style) – набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования.
Наличие общего стиля программирования:
•позволяет избежать синтаксических и смысловых ошибок;
•упрощает поиск синтаксических ошибок;
•облегчает понимание и поддержание исходного кода, написанного больше чем одним программистом.
27
Существующие стандарты оформления кода на языке Си
•C Programming language (K&R) [5]
•Linux Kernel Coding Style [6]
•GNU Coding Standards [7]
•Ganssle Group's Firmware Development Standard
•Netrino Embedded C Coding Standard
•Micrium C Coding Standard
•…
28
Соглашение об оформлении кода на языке Си
•Отступы
•Расположение фигурных скобок
•Имена переменных
•Комментарии
29
Отступы (http://en.wikipedia.org/wiki/Indent_style)
•используются для форматирования исходного кода программы
•применяются для улучшения читабельности.
•предназначены только для программистов
•компилятор языка Си игнорирует такие разделители, как пробел (Space), табуляция (Tab) и перевод на новую строку (Enter).
30