Честно сделанные ошибки следует считать не неудачами, а семенами для основной деятельности по их исправлению. Стивен Джей Гоулд ( Stephen Jay Gould , 1941–2002), американский геолог, палеонтолог и философ науки.
Содержание занятия: Основные понятия. Методы отладки программ Заповеди отладки Инструменты отладки Практическое задание.
Отладка ПС — это деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ. Тестирование ПС — это процесс выполнения его программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом . Основные понятия
Основные понятия В зарубежной литературе отладку часто понимают только как процесс поиска и исправления ошибок (без тестирования), факт наличия которых устанавливается при тестировании. Иногда тестирование и отладку считают синонимами. В нашей стране в понятие отладки обычно включают и тестирование, поэтому мы будем следовать сложившейся традиции. Впрочем совместное рассмотрение в данной лекции этих процессов делает указанное разночтение не столь существенным. Следует однако отметить, что тестирование используется и как часть процесса аттестации ПС
Методы отладки программ в Wolfram Mathematica
Методы отладки программ Д ля отслеживания и контроля состояний вычислительного процесса при их отладке применяют: ручную (desk checking) ; пошаговую ( single-step operation ) ; отладку программ по предварительно заданным точкам останова ( breakpoints – меткам операторов) ; и др.
Заповеди отладки Заповедь 1. Считайте тестирование ключевой задачей разработки ПС, поручайте его самым квалифицированным и одаренным программистам; нежелательно тестировать свою собственную программу. Заповедь 2. Хорош тот тест, для которого высока вероятность обнаружить ошибку, а не тот, который демонстрирует правильную работу программы. Заповедь 3. Готовьте тесты как для правильных, так и для неправильных данных.
Заповедь 4. Избегайте невоспроизводимых тестов, документируйте их пропуск через компьютер; детально изучайте результаты каждого теста. Заповедь 5. Каждый модуль подключайте к программе только один раз; никогда не изменяйте программу, чтобы облегчить ее тестирование. Заповедь 6. Пропускайте заново все тесты, связанные с проверкой работы какой-либо программы ПС или ее взаимодействия с другими программами, если в нее были внесены изменения (например, в результате устранения ошибки). Заповеди отладки
Инструменты отладки Разработаны специальные программные средства (инструменты) для проведения отладки программ, среди которых наиболее популярны так называемые отладчики. Они имеют удобный пользовательский интерфейс, позволяют проводить отладку программ пошагово и с предварительно заданными (заказанными) точками останова, просматривать и изменять состояние выделенной области памяти, контролировать различную информацию на этапе выполнения.
Debug и Gizmos. Основные методы отладки в Unity для новичков. Как пользоваться.
Инструменты отладки Отладчики часто интегрированы в систему разработки кода программ ( например Eclipse CDT, MS Visual Studio ). Широко используются инструменты динамического и статического анализа. Динамические анализаторы ( Valgrind ) контролируют время выполнения участков кода программы, находят точки (области) некорректной работы с памятью и объектами операционной системы и др. Статические анализаторы ( например Klocwork ) выявляют ошибки выхода (обращения) за границы массиWow, потенциальные проблемы безопасности, т. н. утечки памяти, некорректность использования системных ресурсов и др.
Инструменты отладки Популярны также сканеры интерфейсов (напр., Wireshark , позволяющий осуществлять сетевой мониторинг). Однако для анализа типичных ошибок параллельных или многопоточных приложений, напр. т. н. гонки данных, тупиков (взаимной блокировки процессов), потоков в состоянии ожидания, потерянных сигналов, требуются специализир . средства отладки параллельных приложений (напр., Intel Thread Checker ). Следует отметить, что наиболее эффективно комплексное применение инструментов О. п., поскольку конкретные программные средства обеспечивают поиск лишь определённых типов ошибок.
Литература 1 . Вигерс , Карл Разработка требований к программному обеспечению / Карл Вигерс , Джой Битти. — М.: БХВ-Петербург, Русская Редакция, 2014. — 736 c. 2 . Касперски , Крис Техника отладки программ без исходных текстов / Крис Касперски . — М.: «БХВ-Петербург», 2005. — 832 c. 3. Керниган , Брайан Практика программирования / Брайан Керниган , Роб Пайк . — М.: Вильямс, 2015. — 288 c. 4. Клейн, Тобиас Дневник охотника за ошибками. Путешествие через джунгли проблем безопасности программного обеспечения / Тобиас Клейн. — М.: «ДМК пресс. Электронные книги», 2013. — 240 c. 5 . Левинсон, Джефф Тестирование ПО с помощью Visual Studio 2010 / Джефф Левинсон. — М.: ЭКОМ Паблишерз , 2012. — 314 c. 6 . Фаулер , Мартин Рефакторинг . Улучшение существующего кода / Мартин Фаулер . — М.: Символ-плюс, 2008. — 432 c .
Источник: nsportal.ru
Разработка справочной системы, отладка
В процессе разработки прикладных решений нередко возникает необходимость «заглянуть» внутрь выполняющейся программы. Такое обычно случается, когда в программе возникают ошибки. Ошибки могут быть самыми разными. От полного отказа программы на каком-то этапе, до странных результатов, которые выдает вроде бы работающий код.
Искать ошибки можно с помощью отладчика. При отладке можно пользоваться множеством полезных инструментов.
Для того чтобы получить возможность пользоваться инструментами отладки , нужно запустить конфигурацию в режиме отладки . Для этого нужно либо нажать на кнопку Начать отладку, либо нажать клавишу F5 на клавиатуре, либо выполнить команду меню Отладка > Начать отладку, рис. 2.9.
Рис. 2.9. Кнопка запуска конфигурации в режиме отладки
Внешне работа конфигурации в режиме отладки ничем не отличается от обычной работы. Единственно, на не слишком быстрых ПК запуск конфигурации проходит дольше, система может работать медленнее.
Рассмотрим некоторые методы отладки .
Ошибки в программе
Если в программе происходит ошибка, которая делает дальнейшее исполнение программы невозможным, система выдает сообщение об ошибке. Смоделируем эту ситуацию. Откроем модуль объекта для недавно разработанного документа НачислениеЗарплаты и добавим в его начало такой код, рис. 2.10:
//Начало ошибочного кода НоваяПеременная=1/0; //Окончание ошибочного кода
увеличить изображение
Рис. 2.10. Строка, приводящая к ошибке
Теперь запустим конфигурацию (в данный момент неважно, в каком режиме) и, откроем существующий (или создадим новый) документ НачислениеЗарплаты и попытаемся его провести. Ошибочный код находится в процедуре, которая выполняется при проведении документа .
Различные ошибки вызывают различные сообщения, в нашем случае можно наблюдать следующее сообщение, рис. 2.11.
Рис. 2.11. Окно с сообщением об ошибке
Нажав на кнопку Подробно в этом окне, мы видим следующее окно, рис. 2.12.
увеличить изображение
Рис. 2.12. Подробное описание ошибки
Нажатие на кнопку Закрыть позволяет проигнорировать ошибку, кнопка Конфигуратор открывает Конфигуратор, а кнопка Завершить работу завершает работу программы.
После нажатия на кнопку Конфигуратор запускается Конфигуратор, в котором открыт модуль с ошибкой, курсор установлен на ошибочной строке.
Если ошибочным окажется код, который исполняется в обычном режиме работы 1С:Предприятие, произойдет то же самое.
Удалим «ошибочный» код из текста модуля.
Отладка
Основываясь на определениях, приведенных ранее в этой книге, отладку программы можно представить как процесс, осуществляемый после удачного выполнения теста. Процесс отладки начинается при обнаружении ошибки (например, при удачном завершении теста) и проводится в два этапа: 1) определяется природа и местонахождение подозреваемой ошибки в программе; 2J фиксируется или исправляется ошибка,
Следует отметить, что отладка является единственной частью процесса разработки программного обеспечения, к которой программисты питают некоторую неприязнь.
МЕТОДЫ «ГРУБОЙ СИЛЫ»
Наиболее общими при отладке программы являются довольно неэффективные методы «грубой силы». Причина популярности этих методов, возможно, заключается в том, что они не требуют значительного внимания и больших умственных затрат.
Методы грубой силы можно разделить по крайней мере на три категории. 1) отладка с использованием дампа памяти; 2) отладка в соответствии с общим пред ложением «расставить операторы печати по всей программе»; 3) отладка с использованием автоматических средств. Наименее эффективна из них отладка посредством анализа дампа памяти (обычно необработанного отображения состояния всей памяти в восьмеричной или шестнадцатеричной форме). С ней связаны следующие проблемы
1. Сложность установления соответствия между ячейками памяти и переменными в исходной программе.
2. Значительный объем выдаваемых данных, многие из которых не используются.
3. В действительности распечатка состояния памяти является статическим отображением программы (т. е. ее состояния только в какой-то момент времени), но для нахождения большинства ошибок должна быть изучена динамика выполнения этой программы (т. е. изменение ее состояния во времени).
4. Практически распечатка состояния памяти редко получается точно в том месте программы, где находится ошибка Следовательно, дамп не отражает состояние программы в точке, содержащей ошибку; действия осуществляемые в промежутке между моментом проявления ошибки и моментом получения дампа, могут помешать локализовать ошибку.
5. Отсутствие описанных в литературе методологий выявления причины ошибки посредством анализа дампа памяти (многие программисты просто смотрят на дамп, очевидно, ожидая, что ошибка волшебным образом сама себя обнаружит)
Методы второй категории, при которых операторы отображения значений переменных расставляются по всей программе, содержащей ошибку, несколько лучше. Эти методы имеют много недостатков, тем не менее их использование часто оказывается предпочтительнее использования дампов. Они позволяют отображать динамику выполнения программы и рассматривать информацию, которую легче поставить в соответствие исходному тексту. Перечислим некоторые из их недостатков:
1. Расстановка операторов печати в программе в значительной степени заставляет программиста работать методом проб и ошибок, вместо того чтобы поощрять его в процессе отладки думать о поставленной перед ним задаче.
2. В процессе отладки может оказаться необходимым проанализировать большое число данных.
3. Здесь требуется изменять программу при отладке; эти изменения могут скрыть ошибку, нарушить критические временные отношения или внести в программу новые ошибки.
Стоимость использования методов данной категории для больших программ или систем может быть огромной, но для небольших программ они вполне применимы Кроме того, они не подходят для определенных типов программ (например, операционных систем, программ управления процессами).
Методы третьей категории, использующие автоматический средства отладки, подобны методам второй категории, но отличаются от них в части внесения изменений в программу. Анализ динамики выполнения программы осуществляется с помощью отладочных средств языка программирования или специальных интерактивных средств отладки. Типичными языковыми средствами, которые могут быть использованы, являются средства, обеспечивающие получение распечатки трасс выполненных операторов, вызов подпрограмм и (или) изменений специфицированных переменных. Общая функция средств отладки — установление набора «точек прерывания», вызывающих приостаиов процесса исполнения программы после выполнения определенного оператора или изменения значения определенной переменной и позволяющих программисту, работающему за терминалом, проверять текущее состояние программы. Однако эти методы в значительной степени откосятся к методам проб и ошибок, и часто их результаты содержат чрезмерное число избыточных данных.
Общей проблемой методов «грубой силы» является то, что они игнорируют процесс обдумывания. Можно провести аналогию между отладкой программы и расследованием убийства. Фактически во всех детективных романах тайна раскрывается скорее посредством тщательного анализа улик и объединения незначительных на первый взгляд деталей, чем методами «грубой силы», такими, как блокировка улиц или осмотр имущества. Например, так< был раскрыт ряд убийств из оружия 44-го калибра в Нью-Йорке в 1976—1977 гг. Подозреваемого удалось задержать не с помощью методов «грубой силы» (насыхцением авиалиний и газет его портретами, выполненными художником, и увеличением числа полицейских на улицах), а в результате обнаружения нескольких, казалось бы, незначительных улик, одной из которых был билет на автостоянку.
Источник: studopedia.org