Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Основываясь на определениях, приведенных ранее в этой книге, отладку программы можно представить как процесс, осуществляемый после удачного выполнения теста. Процесс отладки начинается при обнаружении ошибки (например, при удачном завершении теста) и проводится в два этапа: 1) определяется природа и местонахождение подозреваемой ошибки в программе; 2J фиксируется или исправляется ошибка,
Следует отметить, что отладка является единственной частью процесса разработки программного обеспечения, к которой программисты питают некоторую неприязнь.
МЕТОДЫ «ГРУБОЙ СИЛЫ»
Наиболее общими при отладке программы являются довольно неэффективные методы «грубой силы». Причина популярности этих методов, возможно, заключается в том, что они не требуют значительного внимания и больших умственных затрат.
Методы грубой силы можно разделить по крайней мере на три категории. 1) отладка с использованием дампа памяти; 2) отладка в соответствии с общим пред ложением «расставить операторы печати по всей программе»; 3) отладка с использованием автоматических средств. Наименее эффективна из них отладка посредством анализа дампа памяти (обычно необработанного отображения состояния всей памяти в восьмеричной или шестнадцатеричной форме). С ней связаны следующие проблемы
1. Сложность установления соответствия между ячейками памяти и переменными в исходной программе.
2. Значительный объем выдаваемых данных, многие из которых не используются.
3. В действительности распечатка состояния памяти является статическим отображением программы (т. е. ее состояния только в какой-то момент времени), но для нахождения большинства ошибок должна быть изучена динамика выполнения этой программы (т. е. изменение ее состояния во времени).
4. Практически распечатка состояния памяти редко получается точно в том месте программы, где находится ошибка Следовательно, дамп не отражает состояние программы в точке, содержащей ошибку; действия осуществляемые в промежутке между моментом проявления ошибки и моментом получения дампа, могут помешать локализовать ошибку.
5. Отсутствие описанных в литературе методологий выявления причины ошибки посредством анализа дампа памяти (многие программисты просто смотрят на дамп, очевидно, ожидая, что ошибка волшебным образом сама себя обнаружит)
Методы второй категории, при которых операторы отображения значений переменных расставляются по всей программе, содержащей ошибку, несколько лучше. Эти методы имеют много недостатков, тем не менее их использование часто оказывается предпочтительнее использования дампов. Они позволяют отображать динамику выполнения программы и рассматривать информацию, которую легче поставить в соответствие исходному тексту. Перечислим некоторые из их недостатков:
1. Расстановка операторов печати в программе в значительной степени заставляет программиста работать методом проб и ошибок, вместо того чтобы поощрять его в процессе отладки думать о поставленной перед ним задаче.
2. В процессе отладки может оказаться необходимым проанализировать большое число данных.
3. Здесь требуется изменять программу при отладке; эти изменения могут скрыть ошибку, нарушить критические временные отношения или внести в программу новые ошибки.
Стоимость использования методов данной категории для больших программ или систем может быть огромной, но для небольших программ они вполне применимы Кроме того, они не подходят для определенных типов программ (например, операционных систем, программ управления процессами).
Методы третьей категории, использующие автоматический средства отладки, подобны методам второй категории, но отличаются от них в части внесения изменений в программу. Анализ динамики выполнения программы осуществляется с помощью отладочных средств языка программирования или специальных интерактивных средств отладки. Типичными языковыми средствами, которые могут быть использованы, являются средства, обеспечивающие получение распечатки трасс выполненных операторов, вызов подпрограмм и (или) изменений специфицированных переменных. Общая функция средств отладки — установление набора «точек прерывания», вызывающих приостаиов процесса исполнения программы после выполнения определенного оператора или изменения значения определенной переменной и позволяющих программисту, работающему за терминалом, проверять текущее состояние программы. Однако эти методы в значительной степени откосятся к методам проб и ошибок, и часто их результаты содержат чрезмерное число избыточных данных.
Общей проблемой методов «грубой силы» является то, что они игнорируют процесс обдумывания. Можно провести аналогию между отладкой программы и расследованием убийства. Фактически во всех детективных романах тайна раскрывается скорее посредством тщательного анализа улик и объединения незначительных на первый взгляд деталей, чем методами «грубой силы», такими, как блокировка улиц или осмотр имущества. Например, так< был раскрыт ряд убийств из оружия 44-го калибра в Нью-Йорке в 1976—1977 гг. Подозреваемого удалось задержать не с помощью методов «грубой силы» (насыхцением авиалиний и газет его портретами, выполненными художником, и увеличением числа полицейских на улицах), а в результате обнаружения нескольких, казалось бы, незначительных улик, одной из которых был билет на автостоянку.
Дата публикования: 2015-01-26; Прочитано: 1427 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!