4886

Многофайловые проекты. Средства отладки и тестирования

Лекция

Информатика, кибернетика и программирование

Многофайловые проекты. Средства отладки и тестирования. При программировании любых более-менее сложных задач неизбежно возникают проблемы, связанные с разрастанием исходного кода и вызываемыми этим неудобствами при разработке и отладке. Естественным...

Русский

2012-11-28

67 KB

11 чел.

Многофайловые проекты. Средства отладки и тестирования.

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

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

Модуль содержит данные и функции их обработки. Другим модулям нежелательно иметь собственные средства обработки этих данных, они должны пользоваться для этого функциями первого модуля. Для того чтобы использовать модуль, нужно знать только его интерфейс, а не все детали его реализации. Чем более независимы модули, тем легче отлаживать программу. Это уменьшает общий объем информации, которую необходимо одновременно помнить при отладке. Разделение программы на максимально обособленные части является сложной задачей, которая должна решаться на этапе проектирования программы.

Модуль чаще всего представляет собой пару из заголовочного (*.h или *.hpp) файла и файла реализации (*.cpp, *.cxx). В заголовочном файле описывается интерфейс модуля, т.е. функции и данные, которые этот модуль предоставляет в пользование другим модулям программы. При проектировании модуля общее правило заключается в том, что в одном файле должны группироваться взаимозависимые объявления и определения, которые, скорее всего будут почти все одновременно нужны в некотором транслируемом модуле. В противном случае, слабо связанные объявления и определения лучше разместить в разных файлах. В заголовочных файлах размещают определения констант, встроенных фукнций (inline), шаблонов. Для избежания проблем, вызванных повторным опредедением функции и данных при включении одного и того же заголовочного файла в разных модулях программы, используются специальные директивы препроцессора (include guard).

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

// header.h

// Include guard

#ifndef _HEADER_H_

#define _HEADER_H_

// Определение константы

const double CD = 1.234;

// Объявление функции

int func( double d );

// Определение шаблона функции

template< class T >

void tmplFunc( T & ref )

{

  ref++;

}

#endif //_HEADER_H_

// header.cpp

#include "header.h"

// Определение функции, объявленной в header.h

int func( double d )

{

  return static_cast< int >( d * d );

}

Средства отладки и тестирования.

Под отладкой понимают процесс поиска и устранения ошибок в программе. Для локализации причины, вызывающей нежелательное поведение, необходимо иметь возможность проследить путь исполнения программы, а также иметь возможность анализировать текущие значения переменных. Такие возможности предоставляются специальными инструментами разработки – отладчиками (debugger). Отладчик позволяет запускать программу в «пошаговом» режиме, наблюдать за её текущим состоянием, анализировать и изменять значения переменных в памяти и т.д. В комплект IDE Microsoft Visual Studio входит визуальный отладчик. При запуске программы на исполнение из Visual Studio с помощью стандартной команды Debug => Start Debugging (кнопка F5), отладчик подключается к ней автоматически. Кроме того, есть возможность подключения отладчика Visual Studio к любой другой уже выполняющейся программе. Для этого нужно использовать команду Debug => Attach to Process…, и выбрать в списке нужную программу.

Для входа в режим отладки можно в любой момент исполнения программы выполнить команду Debug => Break all. Исполнения программы будет приостановлено и следующая исполняемая инструкция кода (в случае, если исходный код для отлаживаемой программы доступен) будет указана отладчиком:

Далее исполнение программы может быть остановлено (Debug => Stop Debugging), продолжено в обычном режиме (Debug => Continue), либо в «пошаговом». Управление пошаговым исполнением осуществляется командами Step Over (переход к следующей инструкции), Step Into (вход «внутрь» следующей инструкции, например, вход в тело вызываемой функции), Step Out (выход «наружу» из текущего кода в вызывающий код, например, выход из функции).

Для более удобного перехода сразу к некоторой конкретной инструкции можно выполнить команду Run To Cursor из контекстного меню, вызываемого правой кнопкой мыши при клике на нужный участок исходного кода в редакторе Visual Studio. Кроме того, инструкцию можно пометить с помощью точки останова (breakpoint) кликнув на колонку слева от редактора кода напротив нужной строки, в этом случае программа будет приостановлена и переведена в режим отладки сразу, как только исполнение достигнет отмеченной инструкции:

Отладчик Visual Studio предоставляет множество интсрументов, облегчающих анализ исполняемой программы. Наиболее важными инструментами являются списки переменных Autos (автоматические переменные), Locals (локальные переменные), а также Watch (список нужных переменных, задаваемый программистом самостоятельно). В процессе отладки в этих списках будут показаны текущие значения переменных, причем их значения можно вручную изменять непосредственно в ходе выполнения программы:

\

Еще одним удобным инструментом отладки является стек вызовов Call Stack, позволяющий проанализировать, какими функциями была вызвана текущая, и переходить непосредственно к вызывающему коду двойным кликом по соответствующей строке таблицы:

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


 

А также другие работы, которые могут Вас заинтересовать

29583. Массовое сознание: Субъективистский и объективистский подходы 14.37 KB
  Массовое сознание включает в себя понятие массы: МассаОртега и Гаса это суждение некомпетентных низкое качество современной цивилизации; Масса Юнгер механизное общество в котором человек является придатком машины; Масса Зиммель Вебер Манхейм это бюрократическое общество которое отличается широко расчленненой организацией в которой принятие решений допускается на высших этапах иерархии; МассаЛенин совокупность трудящихся наименее организованных и просвещенных. МассаШарков это шаблонное Например когда в деревнях все...
29584. Стратегия и тактика планирования рекламной кампании 16.33 KB
  Стратегия и тактика планирования рекламной кампании. Планирование рекламной кампании это процесс в котором принимают участие все структурные подразделения рекламного агентства и маркетинговый отдел рекламодателя. Результат этого процесса составление плана рекламной кампании на определенный период. Главная задача планирования рекламной кампании определить как будет доноситься рекламное послание до потребителя: в какой форме с помощью каких средств массовой информации и в рамках какого бюджета.
29585. Основные понятия в медиапланировании (рейтинг, доля, HUT, PUT, PUR). Их расчет и соотношение в планировании рекламных кампаний 33.55 KB
  Home Using TV одним из базовых показателей в медиапланировании является число людей или домохозяйств в которых смотрят телевизор. Этот показатель описывает количество людей или домохозяйств использующих ТВ на определенный момент времени Иными словами это процент индивидуумов или домохозяйств использующих телевизор в данное время дня. Показатель HUT не включает людей смотрящих телевизор вне дома например в магазинах аэропортах отелях и т. То есть рекламное сообщение смогут увидеть те люди которые по крайней мере в данный момент...
29586. Медиавес рекламной кампании и его измерение (охват, частота, количество предъявлений) 46.5 KB
  Охват — это количество разных индивидуумов, которые были затронуты графиком прохождения рекламной кампании за данный период времени, или, другими словами, увидели нашу рекламную кампанию, наше рекламное объявление хотя бы один раз, обычно представляется в процентном формате.
29587. Принципы отбора медианосителей и оценка их эффективности 13.6 KB
  Рейтинг телевизионного времени доля в тех телезрителей которые смотрели конкретный канал в определенное время от потенциального числа телезрителей. Максимально высокий рейтинг имеет пиковое телевизионное время праймтайм. Сумма всех рейтингов целевой рейтинг показатель чистого полезного охвата умноженный на частоту контакта. Стоимость одного общерейтингового пункта мера определяющая эффективность конкретной программы.
29588. Эффективность рекламных кампаний и лояльность потребителей. Экономические и коммуникативные показатели эффективности 16.05 KB
  Наиболее популярный способ выявления эффективности рекламы методика облегчения вспоминания используемая для того чтобы определить в какой мере человек способен вспомнить ее содержание. Но даже если человек и хорошо запомнил содержание рекламы это вовсе не означает что он готов купить то что рекламируют. Второй способ выявления эффективности рекламы методика узнавания. Людям которые прочитали журнал или видели телевизионную программу предъявляют копии рекламы и задают вопросы о ней.
29589. Новые технологии и виды услуг рекламного рынка 15.87 KB
  Относительно низкая стоимость проекта. Небольшие временные затраты в разработке проекта. Краткосрочность эффекта от реализации проекта Маркетинг слухов Преимущества: 1. Невысокая стоимость в организации проекта.
29590. Соотношение охвата и частоты в медиапланировании. Использование ПО в медиапланировании 20.38 KB
  Соотношение охвата и частоты в медиапланировании. Охват это численность представителей ЦА в рамках компании имевших контакт с рекламой хотя бы 1 раз. При вычислении охвата получатели сообщения учитываются лишь один раз независимо от числа прочитанных ими газет просмотренных или прослушанных телерадиопрограмм. Охват аудитории может быть представлен и как характеристика аудитории которая видела слышала рекламу определенное число раз и как характеристика аудитории которая видела слышала рекламу не менее определенного числа раз.
29591. Рекламные агентства: виды, функции, тенденции развития 12.03 KB
  Агентство также приобретает или привлекает субподрядчиков для покупки рекламного места и времени в различных средствах массовой информации. Фирмы по приобретению рекламного времени. В услуги входит подробный анализ закупаемого времени. После реализации сформированного пакета рекламного времени такая фирма выдает график рекламной трансляции контроль его исполнения и даже проводит расчеты со СМИ.