Администрирование локальных сетей
Рефераты >> Программирование и компьютеры >> Администрирование локальных сетей

lib: lib(file1.o) lib(file2.o) lib(file3.o)

@echo lib is now up-to-date

.c.a:

$(CC) -c $(CFLAGS) $<

$(AR) $(ARFLAGS) $@ $*.o

rm -f $*.o

Фактически, правило .c.a, приведенное выше, встроено в make. Более интересный, но более ограниченный пример конструкции, поддерживающей работу с библиотеками:

lib: lib(file1.o) lib(file2.o) lib(file3.o)

$(CC) -c $(CFLAGS) $(?:.o=.c)

$(AR) $(ARFLAGS) lib $?

rm $? @echo lib is now up-to-date

.c.a:;

Здесь используется режим подстановки расширений макросов. Список $? определен как множество имен об ектных файлов (в библиотеке lib), чьи исходные C-файлы были изменены. Подстановка заменяет .o на .c. (К сожалению, нельзя еще трансформировать в .c~; однако, это может стать возможно в будущем). Заметим также, что запрещается правило .c.a:, создающее каждый об ектный файл один за другим. Эта конструкция значительно ускоряет обновление библиотек, но становится весьма громоздкой, если библиотека содержит как программы на C, так и на ассемблере.

Отладчик ADB

Вызов ADB

Dызываетcz ADB, выполняя adb (1) команду. Синтаксис:

adb [-w] [-k] [-Idir] [-Ppid ] [objfile [corefile]

Где:

-w Разрешает запись в объектный файл.

-k Сообщает ADB, что объектные и основные файлы являются файлами ядра, так что ADB может исполнять соответствующее управление памятью.

-Idir Определяет каталоги , который содержит команды для ADB.

-Ppid "Принимают" уже процесс выполнения для отладки.

objfile Называет выполнимый объектный файл.

corefile Называет основной загрузочный модуль.

Обычно, вызывая ADB:

adb a.out core

Или более просто:

adb

Потому что настройка по умолчанию для объектного файла - a.out, и core файл - core.

Поставка знаку "минус" (-) для средств названия(имени) файла " игнорирует этот параметр, " как в:

adb a.out -

Чтобы записывать в объектный файл при игнорировании core файла, можна напечатать:

adb -w a.out -

Чтобы отлаживать выполняющийся в настоящее время процесс, вызовите ADB, печатая:

adb -Ppid a.out

Pid или " идентификатор процесса " может быть получен, используя ps (1) команда.

Потому что ADB прерывает нажатия клавиши, Вы не можете использовать сигнал выхода из, чтобы выйти от ADB. Вы должны использовать явный запрос ADB $q или $Q (или CONTROL D) чтобы выйти от ADB.

Использование ADB В интерактивном режиме

Вы работаете в интерактивном режиме с ADB, вводя запросы.

Общая форма для запроса:

[address] [,count] [command] [modifier]

ADB поддерживает текущий адрес, называемый "точкой". Этот адрес подобен в функции к текущему указателю в HP-UX редакторе, vi (1). Когда Вы указываете address, ADB устанавливает точку к тому расположению. ADB тогда выполняет команду command count раз. Вы можете вводить address и count как выражения. Вы создаете эти выражения от символов в пределах программы, которую Вы можете проверять и от десятичного числа, восьмеричных, и шестнадцатеричных целых чисел. Вот списки различных операторы для формирующихся выражений.

Формирующие выражение Операторы

Оператор Операция

+ Добавление

- Вычитание или Отрицание

* Умножение

% Целочисленный раздел(деление)

~ Одноместный НЕ

& Поразрядный И

| Поразрядный Содержащий ИЛИ

* Серия к следующему множителю

ADB исполняет арифметические операции на всех 32 битах.

ADB "помнит" последний(прошлый) набор оснований системы счисления. Вы можете изменять(заменять) текущее основание системы счисления с $o, $d, или $x команды. В течение запуска, заданное по умолчанию основание системы счисления шестнадцатерично. Если Вы изменяете(заменяете) основание системы счисления к десятичному числу, весь последующий ввод и вывод целых чисел интерпретируется как десятичное число, пока другой спецификатор основания системы счисления не используется.

Таблица 2 списка некоторые обычно использовала команды ADB и их значение.

Обычно Используемый ADB Команды

Команда Описание

? Печатает содержание от objfile.

/ Печатает содержание от corefile.

= Печатает значение "точки" (.) (адресс) .

: Контрольной точки останова .

$ Разные запросы.

; Разделитель команд.

! Выйти в Шелл.

CONTROL C Заканчивает любую команду ADB.

Отображение Информации

Вы можете запросить ADB расположения или в объектном файле или core файле. Запрос (?) показывает содержание объектного файла, в то время как / запрос исследует core файл. Как только Вы инициализируете процесс (использование или:r или команда:e), или ? или / обращаются к расположениям в адресном пространстве выполняющего процесса.

После любого ? или / запросов, Вы можете определить формат, что ADB должен использовать, чтобы печатать эту информацию. Таблица 3 списка некоторые обычно используемые команды формата.

Обычно Используемых Команды Формата

Команда Описание

c Один байт как символ.

b Один байт как шестнадцатеричное значение.

x Два байта в шестнадцатеричном.

X Четыре байта в шестнадцатеричном.

d Два байта в десятичном числе.

f Четыре байта в единственном(отдельном) с плавающей запятой.

F Восемь байтов в двойном с плавающей запятой.

i Команда Precision Architecture HEWLETT-PACKARD.

s Символьная строка С нулевым символом в конце.

a Печатать в символической форме.

n Печатать newline.

r Печатать пустое пространство.

^ Резервируют точку.

Например, чтобы печатать первый шестнадцатеричный элемент массива длинных целых чисел, названных ints, Вы напечатали бы запрос:

ints/X

Этот запрос устанавливает значение точки к значению таблицы идентификаторов ints. Это также устанавливает значение точечного приращения к четыре. " Точечное приращение " является числом байтов, которые ADB печатает в требуемом формате.

В другом примере, чтобы печатать первые четыре байта как шестнадцатеричный номер после последующих четыре байта как десятичное число, Вы напечатали бы запрос:

ints/XD

В этом случае, ADB все еще устанавливает точку к ints, но точечное приращение - теперь восемь байтов.

Команда newline - специальная команда, которая повторяет предыдущую команду. Команда newline также использует значение точечного приращения, но команда не может всегда иметь значение. В этом контексте, однако, это означает повторять предыдущую команду, используя индекс одних и адрес точки плюс точечное приращение. Так, в этом случае(регистре), команда newline устанавливает точку к ints + 0x8 и печатает два длинных целого числа: первый как шестнадцатеричный номер и второй как десятичное число. Вы можете также повторить команду newline так часто как хотите. Например, Вы могли бы использовать эту методику, чтобы просмотреть разделы памяти.


Страница: