Отладчики.

Редакторы текстов.

Компиляторы (ассемблеры) и редакторы связей.

Эти два класса программ следует объединить, т.к. в поставку любого современного компилятора входит и редактор связей.

Компилятор (ассемблер) формирует объектный код, переводя программу с языка программирования (языка ассемблера), а редактор формирует исполнимый файл, собирая объектные и библиотечные файлы и редактируя перекрестные ссылки.

Для компиляторов можно указать следующие характеристики:

- язык, с которого производится компиляция;

- диалект/стандарт языка;

- аппаратные платформы и ОС, для которых может формироваться объектный и исполнимый файл;

- наличие возможности и качество оптимизации кода;

- форматы поддерживаемых объектных, библиотечных и исполнимых файлов;

Представители: C/C++: Intel C++ Compiler, Borland C++ Compiler, Watcom C++, GNU C.

Pascal: Free Pascal, GNU Pascal.

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

Характеристики:

- формат и кодировка обрабатываемых файлов;

- возможность выделения лексем в тексте;

- возможность поддержки оформления текста в соответствии с парадигмами языка;

- возможность вызывать процесс компиляции прямо из редактора;

- возможность генерации части текста программы (чаще бывает не у редакторов, а у сред).

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

Различают два основных типа отладчиков:

- отладчики пользовательского режима;

- отладчики режима ядра.

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

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

Характеристики:

- тип (режима ядра/пользовательский);

- поддержка символьной отладки (способность читать исходные коды программы и работать с ними). Набор поддерживаемых языков (сред/диалектов);

- набор отображаемой информации: регистры процессора, стек, память (режимы отображения содержимого памяти);

- поддерживаемые режимы отладки: пошаговый, с точками останова, с реакцией на события в системе;

- состав отслеживаемых событий в системе: аппаратные прерывания, обращения к драйверу (другому модулю ядра), вызов функции и т.д.

- (обычно для отладчиков режима ядра) требования к аппаратной поддержке, возможность работы на «живой» системе;

- возможность анализа файлов дампа.

Представители:

Отладчики пользовательского режима: Turbo Debugger (Borland Software Corporation), Cool Debugger (Wei Bao), W32Dasm, AQtime, FlexTracer, GNU Debugger.

Отладчики режима ядра: i386kd/alphakd/ia64kd и WinDbg (Microsoft Corporation) (для работы в “живую” требуют 2 машины. Для обхода этого ограничения существует надстройка LiveKd (Mark E. Russinovich)), SoftIce (NuMega).