Понятие о назначении, составе и порядке использования средств отладки и редактирования пользовательских программ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

44) Файловые вирусы в MS DOS. Бутовые (загрузочные) вирусы. Другие вирусы.

 

Загрузочные (бутовые) вирусы заражают загрузочный (ВООТ) сектор флоппи-диска и ВООТ-сектор или Мaster-Boot сектор (MBR) винчестера. При инфицировании диска вирус в большинстве случаев переносит оригинальный Boot-Sector (или MBR) в какой либо другой сектор диска (например, в первый свободный). Если длина вируса больше длинны сектора, то в заражаемый сектор помещается первая часть вируса, остальные части помещаются в других секторах (например, в первых свободных). Затем вирус копирует системную информацию, хранящуюся в первоначальном загрузчике в свои коды, и записывает их в загрузочный сектор