[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Программирование: Разработка и отладка программ


Настройка программы отладки adb

В этом разделе описана настройка программы adb.

Рассматриваются следующие вопросы:

Объединение нескольких команд в одной строке

В одной строке можно указывать несколько команд, отделяя их друг от друга точкой с запятой (;). Команды выполняются поочередно слева направо. Изменения в текущем адресе и формате передаются следующей команде. Если при выполнении какой-либо команды происходит ошибка, остальные команды игнорируются. Например, следующая последовательность команд перечисляет переменные adb и активные функции в одной из точек программы программы adbsamp2:

$v;$c
variables
b = 10000000
d = ec
e = 10000038
m = 108
t = 2f8.
f(0,0) .main+26.
main(0,0,0) start+fa

Создание сценариев adb

Если при запуске программы adb перенаправить стандартный файл ввода, то adb сможет считывать команды не с клавиатуры, а из текстового файла. Для этого введите символ переправления < (знак "меньше") и укажите имя файла. Например, для того чтобы команды считывались из файла script, введите:

adb sample <script

В этом файле должны быть указаны допустимые команды adb. В случаях, когда один и тот же набор команд применяется для разных объектных файлов, воспользуйтесь файлами сценариев программы adb. С помощью сценариев можно выводить на экран содержимое файлов дампа после того, как в программе произошла ошибка. Файл, содержащий команды выдачи информации о программной ошибке, показан в следующем примере. Если сделать его входным файлом для программы adb, использующей для отладки файла adbsamp2 указанную ниже команду, то вывод будет выглядеть следующим образом:

120$w
4095$s.
f:b:
r
=1n"======= Переменные adb ======="
$v
=1n"======= Таблица адресов ======="
$m
=1n"======= Обратная трассировка стека C ======="
$C
=1n"======= Внешние переменные C ======="
$e
=1n"======= Регистры ======="
$r
0$s
=1n"======= Сегмент данных ======="<
b,10/8xna

$ adb adbsamp2 <script

adbsamp2:running
breakpoint .f:   b  .f+24
    ======= Переменные adb =======
variables
0 = TBD
1 = TBD
2 = TBD
9 = TBD
b = 10000000
d = ec
e = 10000038
m = 108
t = 2f8
    ======= Таблица адресов =======
[0]? map  .adbsamp2.
b1 = 10000000  e1 = 100002f8  f1 = 0
b2 = 200002f8  e2 = 200003e4  f2 = 2f8
[0]/ map  .-.
b1 = 0    e1 = 0    f1 = 0
b2 = 0    e2 = 0    f2 = 0
    ======= Обратная трассировка стека C =======.
f(0,0) .main+26.
main(0,0,0) start+fa
    ======= Внешние переменные C =======Полное слово.
errno: 0.
environ:  3fffe6bc.
NLinit:  10000238.
main: 100001ea.
exit: 1000028c.
fcnt: 0

.loop .count:  1.
f:   100001b4.
NLgetfile: 10000280.
write: 100002e0.
NLinit. .X:  10000238 .
NLgetfile. .X:   10000280 .
cleanup: 100002bc.
exit: 100002c8 .
exit . .X:  1000028c . .
cleanup . .X:  100002bc

    ======= Регистры =======
mq  20003a24  .errno+3634
cs  100000 gt
ics  1000004
pc  100001b4 .f
r15  10000210 .main+26
r14  20000388  .main
r13  200003ec  .loop .count
r12  3fffe3d0
r11  3fffe44c
r10  0
r9  20004bcc
r8  200041d8  .errno+3de8
r7  0
r6  200030bc  .errno+2ccc
r5  1
r4  200003ec  .loop .count
r3  f4240
r2  1
r1  3fffe678
r0  20000380  .f.
f:   b  .f+24

    ======= Сегмент данных =======
10000000:  103 5313  3800  0  0  2f8 0  ec
10000010:  0  10 1000  38 0  0  0  1f0
10000020:  0  0  0  0  1000  0  2000  2f8
10000030:  0  0  0  0  4  6000  0  6000
10000040:  6e10  61d0  9430  a67 6730  6820  c82e  8
10000050:  8df0  94 cd0e  60 6520  a424  a432  c84e
10000060:  8  8df0  77 cd0e  64 6270  8df0  86
10000070:  cd0e  60 6520  a424  a432  6470  8df0  6a
10000080:  cd0e  64 c82e  19 8df0  78 cd0e  60
10000090:  6520  a424  a432  c84e  19 8df0  5b cd0e
100000a0:  64 cd2e  5c 7022  d408  64 911 c82e
100000b0:  2e 8df0  63 cd0e  60 6520  a424  a432
100000c0:  c84e  2e 8df0  46 cd0e  64 15 6280
100000d0:  8df0  60 cd0e  68 c82e  3f 8df0  4e
100000e0:  cd0e  60 6520  a424  a432  c84e  3f 8df0
100000f0:  31 cd0e  64 c820  14 8df0  2b cd0e
10000100:

Установка ширины вывода

Максимальная ширина строки (в символах), выдаваемой программой adb, задается с помощью команды $w. Формат команды:

Ширина$w

В этом формате параметр Ширина - целое число, задающее длину выдаваемой на дисплей строки в символах. Можно задавать любую ширину, подходящую для вашего дисплея. При первом вызове программы adb устанавливается ширина по умолчанию, равная 80 символам.

Данная команда может использоваться при перенаправлении вывода на построчный принтер или на специальное устройство вывода. Например, ширина строки дисплея, равная 120 символам (обычно это максимальная длина строки для построчных принтеров), устанавливается с помощью команды:

120$w

Установка максимального смещения

Программа adb обычно выдает адреса памяти и файлов в виде суммы идентификатора и смещения. Такой формат позволяет установить связь между командами и данными, показанными на экране, и конкретной функцией или переменной. При запуске программа adb устанавливает максимальное смещение, равное 255, так что символьные адреса присваиваются только тем командам и данным, которые отстоят от начала функции или переменной меньше чем на 256 байтов. Остальные команды и данные получают числовые адреса.

Во многих программах фактический размер функции или переменной превышает 255 байт. По этой причине для работы с большими программами в adb предусмотрена возможность изменения максимального смещения. Для этого предназначена команда $s.

Формат команды:

Смещение$s

Параметр Смещение - целое число, задающее новое значение смещения. Например, следующая команда увеличивает максимально возможное смещение до 4095:

4095$s

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

Установка формата данных ввода по умолчанию

Для изменения формата чисел по умолчанию применяются команды $d и $o (octal - восьмеричный). Формат по умолчанию определяет способ интерпретации в программе adb чисел, не начинающихся с 0 (восьмеричные) или с 0x (шестнадцатеричные), и представление чисел на экране, если формат не указан. Эти команды можно использовать для работы с комбинациями десятичных, восьмеричных и шестнадцатеричных чисел.

Команда $o задает переход к восьмеричной системе счисления. После ввода этой команды программа adb будет выдавать все числа в восьмеричном формате, за исключением тех, для которых указан другой формат.

Формат команды $d следующий: Основание$d, где Основание - новое основание системы счисления. Если параметр Основание не указан, то команда $d устанавливает значение по умолчанию, равное 16. При первом запуске программы adb устанавливается шестнадцатеричный формат, который будет использоваться по умолчанию. Если вы изменили формат по умолчанию, то восстановить прежнее значение можно с помощью команды $d без параметра:

$d

Для того чтобы установить десятичный формат, введите следующую команду:

0xa$d

Изменение режима дизассемблирования

С помощью команд $i и $n можно задать набор команд и мнемонику, которые должны применяться программой adb для дизассемблирования команд. Команда $i определяет набор команд, применяемых для дизассемблирования; команда $n - мнемонику, используемую при дизассемблировании.

Если эти команды введены без параметров, то будут показаны текущие значения.

Возможные параметры команды $i:

com Задает набор команд, общих для архитектур PowerPC и POWER.
pwr Задает набор команд и мнемонику для реализации POWER архитектуры POWER.
pwrx Задает набор команд и мнемонику для реализации POWER2 архитектуры POWER.
ppc Задает набор команд и мнемонику для PowerPC.
601 Задает набор команд и мнемонику для микропроцессора PowerPC 601 RISC.

603 Задает набор команд и мнемонику для микропроцессора PowerPC 603 RISC.
604 Задает набор команд и мнемонику для микропроцессора PowerPC 604 RISC.
ANY Определяет любую допустимую команду. Для перекрывающихся наборов команд по умолчанию будет установлена мнемоника архитектуры POWER.

Возможные параметры команды $n:

pwr Задает мнемонику для реализации POWER архитектуры POWER.
ppc Задает мнемонику для платформы POWER.

Связанная информация

Обзор программы отладки adb

Применение выражений в программе adb

Арифметические выражения и вывод текста

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

Применение выражений в программе adb

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


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]