Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программные отладчики и их эксплуатация




Динамический загрузчик

 

В каждой из рассмотренных схем предполагалось, что все необходимые подпрограммы загружаются в память одновременно. Если общее количество памяти, требуемое для подпрограмм меньше доступной памяти машины, возникают затруднения. Эти трудности преодолеваются применением схемы динамической загрузки с последовательным использованием объединителя и загрузчика. Эта схема основывается на том, что обычно разные подпрограммы требуются в разное время и могут взаимно исключать себя. Используя явное определение того, какая подпрограмма содержит обращения к другим подпрограммам, можно задать, так называемую, структуру с перекрытием (оверлейную структуру), которая указывает взаимоисключающие подпрограммы.

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

Динамическое связывание

Бывают случаи, когда для эффективности использования памяти машины осуществляется динамическое связывание подпрограмм, проводимое уже при выполнении программы. То есть подпрограммы загружаются в память только по мере их вызова. Это может быть выгодно, т.к. при определенных условиях в программе некоторые подпрограммы могут вообще не понадобиться. Рассмотрим пример:

if (условие 1) вызов подпрограммы 1
if (условие 2) вызов подпрограммы 2
..............................
if (условие m) вызов подпрограммы m

Многие из ветвей будут пропущены, и не придется загружать в ОП, например, подпрограмму 2 при невыполнении условия 2. В таком случае загрузчик должен работать одновременно с программой и выполнять функции связывания и загрузки подпрограмм.

 

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

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

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

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

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

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

Способности программиста к отладке — это, по-видимому, важнейший фактор в обнаружении источника проблемы, но сложность отладки сильно зависит от используемого языка программирования и инструментов, в частности, отладчиков.

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

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

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

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

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

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

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

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

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

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





Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 589; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.