Инструментальные средства

Характеристика типичного цикла разработки программы. Инструменты, снижающие потребность в отладке. Безопасность программного кода и отладка. Изучение общих замечаний по отладке m-файлов. Рассмотрение установки, удаления и просмотра точек прерывания.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 03.11.2013
Размер файла 60,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Инструментальные средства

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

Отладка -- этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:

узнавать текущие значения переменных;

выяснять, по какому пути выполнялась программа.

Существуют две взаимодополняющие технологии отладки.

Использование отладчиков -- программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.

Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода -- на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.

2. Место отладки в цикле разработки программы

Типичный цикл разработки, за время жизни программы многократно повторяющийся, выглядит примерно так:

Программирование -- внесение в программу новой функциональности, исправление ошибок в имеющейся.

Тестирование (ручное или автоматизированное; программистом, тестером или пользователем; «дымовое», в режиме чёрного ящика или модульное…) -- обнаружение факта ошибки.

Воспроизведение ошибки -- выяснение условий, при которых ошибка случается. Это может оказаться непростой задачей при программировании параллельных процессов и при некоторых необычных ошибках, известных как гейзенбаги.

Отладка -- обнаружение причины ошибки.

3. Инструменты отладки

Отладчик представляет из себя программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.

Также полезными инструментами в руках программиста могут оказаться:

Профилировщики. Они позволят определить сколько времени выполняется тот или иной участок кода, а анализ покрытия позволит выявить неисполняемые участки кода.

API логгеры позволяют программисту отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.

Дизассемблеры позволят программисту посмотреть ассемблерный код исполняемого файла

Снифферы помогут программисту проследить сетевой трафик генерируемой программой

Снифферы аппаратных интерфейсов позволят увидеть данные которыми обменивается система и устройство.

Логи системы.

Использование языков программирования высокого уровня, таких как Java, обычно упрощает отладку, поскольку содержат такие средства как обработка исключений, сильно облегчающие поиск источника проблемы. В некоторых низкоуровневых языках, таких как ассемблер, ошибки могут приводить к незаметным проблемам -- например, повреждениям памяти или утечкам памяти, и бывает довольно трудно определить что стало первоначальной причиной ошибки. В этих случаях, могут потребоваться изощрённые приёмы и средства отладки.

4. Инструменты, снижающие потребность в отладке

Другое направление -- сделать, чтобы отладка нужна была как можно реже. Для этого применяются:

Контрактное программирование -- чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.

Модульное тестирование -- проверка поведения программы по частям.

Статический анализ кода -- проверка кода на стандартные ошибки «по недосмотру».

Высокая культура программирования, в частности, паттерны проектирования, соглашения об именовании и прозрачное поведение отдельных блоков кода -- чтобы объявить себе и другим, каким образом должна вести себя та или иная функция.

Широкое использование проверенных внешних библиотек.

5. Безопасность программного кода и отладка

В программном коде может быть так называемое недокументированное поведение -- серьёзные ошибки, которые не проявляются при нормальном ходе выполнения программы, однако весьма опасны для безопасности всей системы в случае целенаправленной атаки. Чаще всего это результат ошибок программиста. Наиболее известные примеры -- это SQL-инъекция и переполнение буфера. В данном случае задача отладки это:

Выявление недокументированного поведения системы

Устранение небезопасного кода

Выделяют такие методы:

статический анализ кода. На этой фазе программа сканер ищет последовательности в исходном тексте, соответствующие небезопасным вызовам функций и т. д. Фактически идет сканирование исходного текста программы на основе специальной базы правил, которая содержит описание небезопасных образцов кода.

фаззинг. Это процесс подачи на вход программы случайных или некорректных данных и анализ реакции программы.

Reverse engineering (Обратная инженерия). Этот случай возникает, когда независимые исследователи ищут уязвимости и недокументированные возможности программы.

Отладка программ -- не менее серьезный этап, чем их подготовка.

Общие замечания по отладке m-файлов

Вывод листинга m-файла с пронумерованными строками

Установка, удаление и просмотр точек прерывания

Управление исполнением m-файла

Просмотр рабочей области

Профилирование m-файлов

Работа с системой контроля версий программ

6. Общие замечания по отладке m-файлов

Отладка программ -- процесс сугубо индивидуальный и творческий. Большинство пользователей средней квалификации обычно отлаживают программы, не обращаясь к специальным средствам отладки, требующим дополнительного времени для освоения и приобретения навыков использования. Если алгоритм решения задачи достаточно прост, то после нескольких модернизаций программы ее удается довести до нужной «кондиции», т. е. заставить работать корректно.

Для этого часто бывает достаточно ввести в программу режим просмотра результатов промежуточных вычислений, разблокировав их вывод снятием операторов; (точка с запятой) или введя дополнительные переменные, значения которых отражают ход вычислений. После отладки можно вновь ввести блокирующие вывод операторы и убрать указанные переменные.

Серьезная необходимость в применении средств отладки возникает при отладке сложных программ опытными программистами, которые наверняка имеют практику работы с универсальными языками программирования с использованием развитых отладочных средств.

7. Команды отладки программ

Для перехода в командный режим отладки в m-файл следует включить команду keyboard.

Ее можно запустить и в командном режиме:

» keyboard

К» type swl

switch var case {1.2,3}

dispCПервый квартал')

case {4.5.6}

dispC Второй квартал')

case {7,8,9}

dispC'Третий квартал')

case {10,11.12}

disp('Четвертый квартал')

otherwise

disp('Ошибка в задании')

end

К» return

»

Признаком перехода в режим отладки становится появление комбинированного символа К». Он меняется на символ » после возврата командой return в обычный командный режим работы. То же самое происходит при использовании команды dbquit, также прекращающей режим отладки, но прекращающей и выполнение т-файла. Если команда return находится в самом m-файле, она прекратит его выполнение и передаст управление туда, откуда был вызван этот файл.

8. Вывод листинга m-файла с пронумерованными строками

Один из способов отладки m-файлов -- размещение в них точек прерывания. Однако в командном режиме нельзя задать установку таких точек с помощью курсора мыши (как в отладчике Windows). Поэтому необходимо иметь листинг программы с пронумерованными строками. Он создается с помощью команды dbtype.

Пример:

» keyboard

К» dbtype sw1

1 switch var

2 case {1.2.3}

3 disp(' Первый квартал')

4 case {4.5,6}

5 disp('Второй квартал')

6 case {7,8.9}

7 disp('Третий квартал')

8 case {10.11,12}

9 disp('Четвертый квартал')

10 otherwise

11 disp('Ошибка в задании')

12 end

9. Установка, удаление и просмотр точек прерывания

Для установки в тестируемый m-файл точек прерывания используются следующие команды:

dbstop In M-file at lineno -- установить точку прерывания в заданной строке;

dbstop In M-file at subfun -- установить точку прерывания в подфункции;

dbstop in M-file -- установить точку прерывания в m-файле;

dbstop if error -- установить точку прерывания при сообщении об ошибке, но не при ошибках внутри цикла try...catch;

dbstop if all error -- установить точку прерывания при сообщении о любой ошибке;

dbstop if warning -- установить точку прерывания при предупреждении;

dbstop if infnan или naninf -- установить точку прерывания при результате Inf или NaN.

Можно использовать упрощенный ввод этих команд без использования слов in, at и if. При установке контрольной точки она появляется в окне редактора/отладчика m-файлов. Для удаления точек прерывания используется команда dbclear с тем же синтаксисом, что и dbstop, например:

dbclear M-file at 1 ineno -- удалить точку прерывания в заданной строке заданного файла.

Команда dbstatus выводит список установленных в данной сессии точек прерывания.

10. Управление исполнением m-файла

После установки точек прерывания начинается собственно процесс тестирования m-файла. Он заключается в исполнении одного или нескольких шагов программы с возможностью просмотра содержимого рабочей области, т. е. значений переменных, меняющихся в ходе выполнения программы. Для пошагового выполнения программы используется команда dbstep в следующих формах:

dbstep -- выполнение очередного шага;

dbstep nlines -- выполнение заданного числа строк программы;

dbstep In -- если следующая выполняемая строка текущего m-файла является вызовом функции из другого m-файла, эта форма позволяет перейти к первой исполняемой строке вызываемой функции и остановиться там;

dbstep out -- если следующая выполняемая строка текущего m-файла является вызовом функции из другого m-файла, эта форма позволяет перейти к вызываемой функции и остановиться сразу же после ее выполнения.

Для перехода от одной остановки программы к другой используется команда dbcont.

11. Просмотр рабочей области

В точках прерывания пользователь имеет возможность просмотреть состояние рабочей области с помощью ранее описанных команд who и whos -- см. урок 5. Кроме того, для перемещения по рабочим областям стека вызванных функций вверх или вниз используются следующие команды:

dbdown -- перемещение в стеке вызываемых функций сверху вниз;

dbup -- перемещение в стеке вызываемых функций снизу вверх.

Находясь в рабочей области, можно не только просматривать значения переменных, но и менять их в ходе отладки программы. С помощью команды dbstack можно просматривать стек функций. Для завершения отладки используется команда dbquit.

12. Профилирование m-файлов

Достижение работоспособности программы -- лишь один из этапов ее отладки. Не менее важным вопросом является оптимизация программы по минимуму времени исполнения или по минимуму объема кодов.

Оценка времени исполнения отдельных частей программы называется ее профилированием. Для выполнения такой процедуры служит команда profile - позволяют анализировать только m-файлы функций, но не сценариев. Чтобы получить профиль выполнения сценария, приходится преобразовывать его в функции (как правило, не имеющую входных и выходных параметров), добавляя соответствующий заголовок function.], имеющая ряд опций:

profile fun -- запуск профилирования для функции fun;

profile report -- вывод отчета о профилировании;

profile plot -- графическое представление результатов профилирования в виде диаграммы Парето;

profile filename -- профилирование файла с заданным именем и путем;

prof ile report N -- вывод отчета по профилированию заданных N строк;

profile report frac -- выводит отчет по профилированию тех строк, относительная доля выполнения которых в общем времени выполнения составляет не менее чем frac (от 0.0 до 1.0);

profileon -- включение профилирования;

profile off -- выключение профилирования;

profile reset -- выключение профилирования с уничтожением всех накопленных данных;

INFO = profile -- возвращает структуру со следующими полями:

file -- полный путь к профилируемому файлу;

interval -- интервалы времени в секундах;

count -- вектор измерений;

state -- состояние профилировщика: 'on' (включен) или 'off (выключен).

Нетрудно заметить, что при профилировании выводятся номера строк программы, у которых время выполнения превосходит 0.01 с. С использованием этого интервала и оценивается время исполнения программного кода. Последняя команда выводит графическую диаграмму профилирования, показанную на рис. 21.1.

Рис. 1. Графическое представление результатов профилирования

При графическом представлении профилирования по горизонтальной оси указываются номера строк, а по вертикальной -- время их выполнения. Сначала показываются строки с наибольшим временем выполнения. Таким образом, программист, отлаживающий работу программы, имеет возможность наглядно оценить, где именно находятся критические по быстродействию фрагменты.

13. Создание итогового отчета

Для создания суммарного отчета о профилировании служит команда profsum, которая используется в нескольких формах:

profsumm -- вывод полного отчета о результатах профилирования т-файла. Выводятся данные о времени выполнения для строк, суммарное время выполнения которых составляет 95% от общего времени (если таких строк много, выводятся данные о 10 строках, выполнение которых заняло наибольшее время);

profsumm(FRACTION) -- выводит часть отчета для строк, относительное время выполнения которых составляет FRACTION (от 0.0 до 1.0) от общего времени выполнения файла;

profsurmi(N) -- выводится отчет по N строкам с максимальным временем выполнения;

profsumm(STR) -- выводит отчет только по тем строкам, в которых встречается строковое выражение STR;

profsumm(INFO), profsurmKINFO, FRACTION), profsumm(INFO, N) HprofsummdNFO, STR) -выводят итоговый отчет по строкам, заданным массивом INFO.

14. Построение диаграмм Парето

Команда profile plot использует для построения графическую команду pareto. Диаграмма Парето представляет собой столбцы, расположенные в порядке убывания отображаемых значений. С другими возможностями команды pareto можно ознакомиться, выполнив команду help pareto.

pareto(Y,NAMES) -- строит диаграмму Парето с пометкой столбцов значений вектора Y соответствующими именами, содержащимися в векторе NAMES;

pareto(Y.X) -- строит диаграмму Парето для значений вектора Y в зависимости от значений вектора X;

pareti(Y) -- строит диаграмму Парето для значений вектора Y в зависимости от индексов его элементов;

[H,AX]=pareto(...) -- возвращает вектор дескрипторов графических объектов диаграммы Н и их осей АХ.

Пример построения диаграммы Парето был рассмотрен выше (см. рис. 21.1).

Отладчик (дебаггер, англ. debugger) -- компьютерная программа, предназначенная для поиска ошибок в других программах, ядрах операционных систем, SQL-запросах и других видах кода. Отладчик позволяет выполнять трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения кода, устанавливать и удалять контрольные точки или условия остановки и т.д.

разработка программный код отладка

15. Популярные отладчики

AQtime -- коммерческий отладчик для приложений, созданных для .NET Framework версии 1.0, 1.1, 2.0, 3.0, 3.5 (включая ASP.NET приложения), а также для Windows 32- и 64-битных приложений;

DBX -- стандартный отладчик уровня исходного кода для языков C, C++, Фортран и Java, доступный для операционных систем Solaris, AIX, IRIX, Tru64 UNIX, GNU/Linux иBSD;

DDD -- графический фронтэнд к отладчикам DBX и GDB, использующий библиотеку виджетов Motif;

DTrace -- фреймворк динамической трассировки для Solaris, OpenSolaris, FreeBSD, Mac OS X и QNX; DTrace не является отладчиком в классическом понимании этого термина, так как DTrace не может приостановить работу программы, из-за этого DTrace нельзя использовать для пошагового выполнения программы;

Electric Fence -- отладчик памяти;

GNU Debugger -- портабельный отладчик уровня исходного кода и дизассемблер из системы программирования GNU, работающий со многими языками программирования, операционными системами и системными архитектурами;

IDA -- дизассемблер и отладчик уровня машинного кода для операционных систем семейств GNU/Linux и Windows;

MDB -- универсальный модульный отладчик уровня исходного кода для Solaris, может использоваться как локальный отладчик ядра;

Microsoft Visual Studio -- среда разработки программного обеспечения корпорации Microsoft, включающая средства отладки уровня исходного кода;

OllyDbg -- бесплатный отладчик уровня машинного кода для операционных систем семейства Windows;

Immunity Debugger -- отладчик, такой же, как OllyDbg, но с возможностью подключения скриптов на языке Python;

SoftICE -- отладчик уровня ядра для операционных систем семейства Windows;

Dr. Watson -- стандартный отладчик Windows, позволяет создавать дампы памяти;

TotalView -- коммерческий отладчик для Unix;

WinDbg -- бесплатный отладчик от корпорации Microsoft;

FlexTracer -- коммерческий отладчик SQL-запросов для различных СУБД.

Размещено на Allbest.ru


Подобные документы

  • Основные стадии разработки, принципы тестирования и отладка программного модуля "VFS". Особенности проектирования на языке UML. Методы "грубой силы" и их применение при отладке программы. Вредные факторы, присутствующие на рабочем месте программиста.

    дипломная работа [827,0 K], добавлен 07.03.2012

  • Особенности разработки кода программного модуля на современных языках программирования. Отладка и тестирование программы, оформление документации на программные средства. Применение инструментальных средств для автоматизации оформления документации.

    отчет по практике [203,8 K], добавлен 12.04.2015

  • Изучение основных этапов программирования на ассемблере, который является символическим представлением машинного языка, то есть каждой машинной команде соответствует команда ассемблера. Реализация алгоритма выполнения программы для просмотра bmp файлов.

    курсовая работа [248,0 K], добавлен 25.12.2012

  • Инструментальные средства разработки сайта. Таблицы базы данных, их описание. Общие принципы разработки программного продукта. Структура программного продукта клиента. Страница информации о пользователе и его заказов, информационная безопасность.

    дипломная работа [3,5 M], добавлен 14.06.2012

  • Описание документов, на основании которых ведется разработка. Назначение разработки и анализ функций проектируемого программного средства. Этапы разработки программы для поиска и открытия файлов. Руководство для пользователя на разработанную программу.

    курсовая работа [3,3 M], добавлен 10.11.2010

  • Подсчет количества функциональных точек. Расчет трудозатрат на разработку программного средства и ориентировочного времени его разработки, модель жизненного цикла. Разработка технического задания на создание автоматизированной системы, требования к ней.

    курсовая работа [2,0 M], добавлен 11.01.2014

  • Проектирование программного обеспечения. Схема начального формирования каталога файлов, вывода на экран каталога файлов, удаления файлов, сортировки файлов по имени, дате создания и размеру методом прямого выбора. Управление каталогом в файловой системе.

    курсовая работа [804,0 K], добавлен 08.01.2014

  • Сравнительный анализ программ-аналогов, характеристика инструментальных средств разработки. Анализ требований и определение спецификаций программного обеспечения, отладка и тестирование программы. Изучение руководства по использованию программы.

    курсовая работа [2,1 M], добавлен 10.04.2023

  • Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.

    курсовая работа [501,4 K], добавлен 07.12.2016

  • Разработка программного средства для поиска альтернативных решений многокритериальных задач. Проектирование программного средства с помощью объектно-ориентированного подхода. Пример листинга программного кода. Особенности работы программы на примере.

    контрольная работа [346,5 K], добавлен 11.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.