Средства разработки приложений



              

Развитие без отчетливой цели


Ранняя разработка Unix происходила на системах PDP компании DEC, на которых имелся очень простой отладчик ODT (Octal Debugging Technique). В программах ODT поддерживался совершенно примитивный синтаксис: каждая команда состояла из восьмеричного адреса слова физической памяти, за которым следовал одиночный символ («B» для установки точки прерывания или слеш («/») для чтения и, возможно, записи содержимого в эту ячейку памяти) (см. рис. 2A).



Рис. 2. Синтаксис отладчика ODT-8, примерно 1967 г.

Итак, появился небольшой язык. Синтаксис ODT, очевидно, повлиял на вид первого отладчика новой системы Unix, разрабатывавшейся на PDP. Этот отладчик назвали просто db. Ко времени Unix V3 в 1971 г. в командном синтаксисе db были заимствованы основные черты языка ODT, который начал расширяться за счет использования дополнительных символов для определения режимов адресации и вариантов форматирования вывода, как показано на рис. 2B.

К 1980 г. db был заменен на adb, который был включен в описание AT&T SVR3 Unix. За это время в языке появилось несколько новых отладочных команд. Теперь поддерживались не только простые адреса, но и арифметические выражения (например, допустимой конструкцией стала «123+456 /»). Кроме того, символ после «/» теперь обозначал формат, а символ после «$» – действие. Синтаксис adb показан на рис. 2C.

Особенно интересной была конструкция «$<» для чтения внешнего командного файла, поскольку она обеспечила возможность разработки примитивных adb-программ, или макросов, в которых выполнялись последовательности команд, отображающих содержимое структур данных языка C по заданным адресам памяти. Т.е. для отображения структуры данных ядра proc нужно было взять ее адрес и затем ввести $ для выполнения предопределенной последовательности команд, отображающих содержимое памяти, в которой располагалась структура данных языка C, описывающая соответствующий процесс. Вид макроса proc в SunOS 4 образца 1984 г. показан на рис. 3. Для облегчения понимания вывода теперь стало позволяться дописывать к команде «/» в кавычках символы перехода на новую строку («n») и табуляции («16t»), которые включались в выводимые данные макроса.


Содержание  Назад  Вперед