Презентация по МДК.01.01. Системное программирование на тему Отладка программы. Принципы и виды отладок
Отладка программы.Принципы и виды отладок Вопросы для повторения: - Какая клавиша и кнопка позволяет откомпилировать проект (на наличие синтаксических ошибок). - Где отображаются ошибки, обнаруженные в процессе компиляции программы? Выполнение отладки: 1) Поставить курсор на нужную строку кода – нажать <Отладка> - <Выполнить до курсора>После этого программа выполняется до той строки, где курсор и строка выделяется синим цветом.Далее можно пошагово выполнять программу. Для этого надо нажимать "Следующий шаг"Можно нажать "Продолжить выполнение", тогда программа выполнится полностью...Можно посмотреть ассемблерный код в процессе остановки программы. Для этого выполнить до курсора, потом <Отладка> - <Показать окно CPU>... В Dev C++ довольно слабый Отладчик. Можно скачать OllyDbg и настроить Dev C++ так, чтобы предпоследний можно было из этой среды запустить. Написанная (вечером?) большая программа всегда содержит ошибки. Отладка (debugging) Написав определенную программу, вы должны найти и удалить ошибки. Этот процесс обычно называют отладкой (debugging), а ошибки — жучками (bugs). Иногда говорят, что термин «жучок» возник в те времена, когда аппаратное обеспечение выходило из строя из-за насекомых, случайно заблудившихся среди электронных ламп и реле, заполнявших комнаты. Иногда считают, что этот термин изобрел Грейс Мюррей Хоппер, создатель языка программирования COBOL. Отладка (debugging) 1. Компилируем программу. 2. Редактируем связи. 3. Выполняем программу. Отладка выглядит примерно так: 1. Компилируем программу. 2. Редактируем связи. 3. Выполняем программу.Обычно эта последовательность операций выполняется снова и снова: для действительно крупных программ этот процесс повторяется сотни и тысячи раз год за годом Отладка выглядит примерно так: Как понять, что программа действительно работает правильно? Основной вопрос отладки звучит так: Программировать надо так, чтобы жучкам негде было укрыться. Главная цель – структурировать программу так, чтобы минимизировать вероятность ошибок и максимально увеличить вероятность их обнаружения. 1) Подумайте об отладке, прежде чем напишете первую строку своей программы. Когда написано уже много строк, уже слишком поздно пытаться упростить отладку.2) Решите, как сообщать об ошибках. Можно использовать функцию Error() и перехватывать исключение в функции main(). Практические советы по отладке: 3) Старайтесь, чтобы программу было легко читать:а) хорошо комментируйте свою программу (коротко указать название программы, цель программы, кто написал программу и зачем, номера версий, какие фрагменты кода могут вызвать сложности, основные идей, как организован код, какие предположения сделаны относительно вводных данных, каких фрагментов кода пока не хватает и какие варианты еще не обработаны). Практические советы по отладке: б) Используйте осмысленные имена (не означает, что длинные);в) используйте логичную схему кода;г) разбивайте программу на небольшие фрагменты, каждый из которых выражает определенную логическую операцию (старайтесь, чтобы функция не превышала 1-2 страниц); Практические советы по отладке: д) избегайте сложных выражений (вложенных циклов, вложенных инструкций if, сложных условий и т.д.) Иногда они необходимы, но здесь часто прячутся ошибки.е) используйте, где только можно, библиотечные функции, а не собственный код (библиотеки, как правило, лучше продуманы и протестированы, чем ваши собственные программы). Практические советы по отладке: cout << "Привет, << name << '\n'; // Ой! 1. Закрыта ли кавычка строки литералов? наиболее распространенные ошибки компиляции: cout << "Привет, " << name << '\n; // Ой/ 2. Закрыта ли кавычка отдельного литерала? наиболее распространенные ошибки компиляции: int f (int a){ if (a>0) { /* что-то делаем */else { /* делаем что-то другое */ } } /Ой! 3. Закрыта ли фигурная скобка блока? наиболее распространенные ошибки компиляции: 4. Каждое ли имя объявлено? наиболее распространенные ошибки компиляции: 5. Включены ли все необходимые заголовочные файлы (например, #include "std_lib_facilities. h")? наиболее распространенные ошибки компиляции: 6. Объявлено ли каждое имя до его использования? наиболее распространенные ошибки компиляции: int count; /*...*/ ++Count; // Ой!char ch; /*...*/ Cin>>c; // Ой-ой!7. Правильно ли набраны все имена? наиболее распространенные ошибки компиляции: х = sqrt(y)+2 // Ой!z = х+3;8. Поставлено ли двоеточие после каждой инструкции? наиболее распространенные ошибки компиляции: После того как программа скомпилирована, а ее связи отредактированы, наступает самый трудный этап, на котором необходимо понять, почему программа работает не так, как вы предполагали. Обычная проблема с консолью Windows заключается в том, что она исчезает, не дав вам шанса увидеть, что было выведено на экран (если что-то все-таки было выведено). Одно из решений этой проблемы — вызвать функцию keep_window_open () из заголовочного файла std_lib_facilities.h в конце функции main О. for (int i = 0; i<=max; ++j) { // Ой! (Дважды) for (int i=0; 0
> d; // вводим температуру в переменную ввода double k = ctok("c"); // преобразуем температуру Cout << k << endl ; // выводим температуру на печать } 2) Самой низкой температурой является абсолютный нуль, т.е. -273,15°С, или 0 К. Даже после исправления приведенная выше программа выводит неверные результаты для температуры ниже абсолютного нуля. Поместите в функцию main () проверку, которая выводит сообщение об ошибке, если температура ниже -273,15°С. 3) Повторите упр. 2, но на этот раз ошибку обработайте в функции ctok (). Как определить, когда следует остановить отладку? Ясно, что отладка должна идти до тех пор, пока не будут выявлены все ошибки, — или нам так покажется.А как узнать, что мы нашли последнюю ошибку? Мы не знаем. Последняя ошибка — это шутка программистов. Такой ошибки не существует. В большой программе никогда невозможно найти последнюю ошибку.