Понятие о назначении, составе и порядке использования средств отладки и редактирования пользовательских программ
Отла́дка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится :
· узнавать текущие значения переменных;
· выяснять, по какому пути выполнялась программа.
Существуют две взаимодополняющие технологии отладки.
· Использование отладчиков — программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
· Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода — на экран, принтер, громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием.
Типичный цикл разработки, за время жизни программы многократно повторяющийся, выглядит примерно так:
1. Программирование — внесение в программу новой функциональности, исправление ошибок в имеющейся.
2. Тестирование (ручное или автоматизированное; программистом, тестером или пользователем; «дымовое», в режимечёрного ящика или модульное…) — обнаружение факта ошибки.
3. Воспроизведение ошибки — выяснение условий, при которых ошибка случается. Это может оказаться непростой задачей при программировании параллельных процессов и при некоторых необычных ошибках, известных как гейзенбаги.
4. Отладка — обнаружение причины ошибки.
Способности программиста к отладке — это, по-видимому, важнейший фактор в обнаружении источника проблемы, но сложность отладки сильно зависит от используемого языка программирования и инструментов, в частности, отладчиков.
Отладчик представляет из себя программный инструмент, позволяющий программисту наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.
Также полезными инструментами в руках программиста могут оказаться:
· Профилировщики. Они позволят определить сколько времени выполняется тот или иной участок кода, а анализ покрытияпозволит выявить неисполняемые участки кода.
· API логгеры позволяют программисту отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.
· Дизассемблеры позволят программисту посмотреть ассемблерный код исполняемого файла
· Снифферы помогут программисту проследить сетевой трафик генерируемой программой
· Снифферы аппаратных интерфейсов позволят увидеть данные которыми обменивается система и устройство.
· Логи системы.
Использование языков программирования высокого уровня, таких как Java, обычно упрощает отладку, поскольку содержат такие средства как обработка исключений, сильно облегчающие поиск источника проблемы. В некоторых низкоуровневых языках, таких как ассемблер, ошибки могут приводить к незаметным проблемам — например, повреждениям памяти илиутечкам памяти, и бывает довольно трудно определить что стало первоначальной причиной ошибки. В этих случаях, могут потребоваться изощрённые приёмы и средства отладки.
44) Файловые вирусы в MS DOS. Бутовые (загрузочные) вирусы. Другие вирусы.
Загрузочные (бутовые) вирусы заражают загрузочный (ВООТ) сектор флоппи-диска и ВООТ-сектор или Мaster-Boot сектор (MBR) винчестера. При инфицировании диска вирус в большинстве случаев переносит оригинальный Boot-Sector (или MBR) в какой либо другой сектор диска (например, в первый свободный). Если длина вируса больше длинны сектора, то в заражаемый сектор помещается первая часть вируса, остальные части помещаются в других секторах (например, в первых свободных). Затем вирус копирует системную информацию, хранящуюся в первоначальном загрузчике в свои коды, и записывает их в загрузочный сектор