Otladchik programm sistemy DEMOS adb
Proizvodstvenno-vnedrencheskij kooperativ
"I N T E R F E J S"
Dialogovaya Edinaya Mobil'naya
Operacionnaya Sistema
Demos/P 2.1
Otladchik programm sistemy DEMOS
adb.
Moskva
1988
2
ANNOTACIYA
Opisan otladchik programm v sisteme DEMOS adb. Rassmatriva-
yutsya direktivy otladchika, a takzhe opisyvaetsya ego primene-
nie.
3
1. NAZNACHENIE PROGRAMMY ADB
adb - otladochnaya programma sistemy DEMOS. Ona pozvolyaet
izuchat' obraz pamyati prervannoj programmy, zapomnennyj v
fajle core, i vypolnyat' programmy pod upravleniem otladchika,
obespechivaya prosmotr pamyati v razlichnyh formatah, vypolne-
nie programm s tochkami ostanova, a takzhe izmenenie pamyati
ili fajlov pri neobhodimosti. Predpolagaetsya, chto pol'zova-
tel' horosho znakom s osnovnymi komandami sistemy DEMOS.
2. RABOTA S KOMPILYATOROM SI
Rassmotrim sleduyushchuyu programmu na yazyke Si:
1 char *charp = "eto predlozhenie.";
2 main(argc, argv)
3 int argc;
4 char **argv;
5 {
6 int fd;
7 if (argc != 2) {
8 printf("otsutstvie imeni vyhodnogo fajla\n");
9 exit(8);
10 }
11 if ((fd = creat(argv[1],0666)) < 0) {
12 printf("%s: ne otkryvaetsya\n", argv[1]);
13 exit(8);
14 }
15 charp = '|';
16 save(fd, charp);
17 }
18 save(fd, ptr)
19 int fd;
20 char *ptr;
21 {
22 int cc;
23 while (cc = *ptr++) {
24 write(fd, cc, 1);
25 }
26 }
Ris.1.
Programma illyustriruet naibolee obshchie oshibki, dopuskaemye
programmistami na yazyke Si. Cel' programmy - izmenit' maluyu
russkuyu bukvu "e" v nachale stroki, ukazannoj charp i dannuyu
stroku pomestit' v fajl, imya kotorogo zadaetsya v komandnoj
stroke.
Pust' imya fajla, soderzhashchego tekst dannoj programmy budet
prog.c. Togda komanda translyacii budet imet' vid:
cc -O -o prog prog.c
4
Real'no pri etom projdut sleduyushchie processy:
/lib/c cpp prog.c /tmp/cc0663
/lib/c0 c0 /tmp/cc0663 /tmp/cc1663 /tmp/cc2663
/lib/c1 c1 /tmp/cc1663 /tmp/cc2663 /tmp/cc0663
/lib/c2 c2 /tmp/cc0663 /tmp/cc3663
/bin/as as -u -o prog.o /tmp/cc3663
/bin/ld ld -X /lib/crt0.o -o prog prog.o -lc
gde:
cpp - preprocessornaya obrabotka;
c0,c1
- sobstvenno kompilyaciya
c2 - optimizaciya poluchennogo koda
as - assemblirovanie
ld - redaktirovanie svyazej.
Sleduet otmetit' sleduyushchie momenty:
- Neobyazatel'nyj vyzov optimizatora c2 (t.k. ukazan
flag -O) zhelatelen pri rabote s adb, v protivnom slu-
chae ponimanie assemblernogo teksta uslozhnyaetsya.
- Redaktor svyazej ld podklyuchaet k programme starter
/lib/ctr0.o i biblioteku -lc (/usr/lib/libc.a).
- V komande otsutstvuet flag -s (unichtozhenie tablicy
metok v ob®ektnom module). |to pozvolyaet adb ispol'-
zovat' mnemonicheskie imena iz programmy na Si (tipa
charp) vmesto ih znachenij.
Rezul'tatom raboty komandy cc budet fajl prog. Po komande
prog out
dolzhen poyavit'sya fajl out, soderzhashchij tekst
|to predlozhenie.
Odnako, etogo ne proizojdet iz-za oshibok v programme. Odnim
iz sredstv issledovaniya podobnyh situacij i yavlyaetsya otlad-
chik adb.
5
3. VYPOLNENIE PROGRAMMY ADB
3.1. Vyzov programmy
adb vyzyvaetsya sleduyushchim obrazom:
adb obfajl obrpam
gde obfajl yavlyaetsya vypolnyaemym fajlom DEMOS, a obrpam yavlya-
etsya obrazom pamyati fajla. V rassmatrivaemom primere vyzov
adb budet imet' vid:
adb prog
t.k. obraz pamyati eshche ne sozdan. Znacheniyami po umolchaniyu
yavlyayutsya fajly a.out i core sootvetstvenno. Esli v kachestve
imeni fajla ispol'zuetsya znak minus "-", to dannyj argument
ignoriruetsya, naprimer:
adb - core
3.2. Issledovanie pamyati
V adb imeyutsya komandy dlya issledovaniya pamyati v oboih faj-
lah. Komandoj ? issleduetsya soderzhanie fajla obfajl; koman-
doj / issleduetsya obrpam.
Osnovnoj format komand izucheniya pamyati:
ili
3.3. Tekushchij adres
adb podderzhivaet tekushchij adres, (oboznachaemyj tochkoj), koto-
ryj po svoim funkciyam podoben tekushchemu ukazatelyu redaktora
DEMOS. Kogda postupaet novyj adres, tekushchij adres ustanavli-
vaetsya v etu yachejku, tak komanda:
0126?i
ustanavlivaet tekushchuyu tochku v vos'merichnoe 126 i raspechaty-
vaet instrukciyu |VM po dannomu adresu. Komanda:
.,10/d
pechataet 10 desyatichnyh chisel, nachinaya s tekushchej tochki. V
6
konce tekushchim adresom stanovitsya adres poslednego napechatan-
nogo slova.
3.4. Vyrazheniya
Adresa predstavleny vyrazheniyami. Vyrazheniya sostoyat iz desya-
tichnyh, vos'merichnyh i shestnadcaterichnyh chisel i imen pere-
mennyh otlazhivaemoj programmy. Oni mogut kombinirovat'sya s
operatorami +, -, *, % (celochislennoe delenie), & (porazryad-
naya kon®yunkciya), ! (porazryadnaya diz®yunkciya), # (okruglenie
do sleduyushchego kratnogo) i ~ (ne) (vse vychisleniya v adb yavlya-
yutsya 32-bitovymi). Simvolicheskij adres dlya Si-programmy
pol'zovatel' mozhet napechatat' v vide imya ili _imya; adb priz-
naet obe formy.
3.5. Formaty
Dlya pechati dannyh pol'zovatel' ukazyvaet nabor bukv i simvo-
lov, opisyvayushchih format vyvoda na pechat'. Formaty "zapomina-
yutsya", v tom smysle chto vvod komandy bez formata proizvodyat
vyvod informacii v sootvetstvii s predydushchim formatom. Nizhe
privedeny naibolee chasto ispol'zuemye formaty:
^ tochka umen'shaetsya na velichinu tekushchego inkrementa.
a znachenie tochki;
b odin bajt v vos'merichnom kode;
c odin bajt kak simvol;
d odno slovo v desyatichnom kode;
f dva slova s plavayushchej zapyatoj;
i komanda SM-4;
n pechat' simvola novoj stroki;
o odno slovo v vos'merichnom kode;
r pechat' probela;
s stroka simvolov, zakanchivayushchayasya nulevym simvolom;
u odno slovo kak desyatichnaya cifra bez znaka;
Simvoly formata prigodny i dlya oboznacheniya dlinnyh (long)
velichin, naprimer, D - dlya dlinnyh desyatichnyh chisel, a F -
dlya dlinnyh chisel s plavayushchej zapyatoj (double).
7
3.6. Osnovnye znacheniya komand
V obshchem sluchae zapros k adb imeet sleduyushchij vid:
adres,schetchik komanda modifikator
kotoryj ustanavlivaet tochku na "adres" i vypolnyaet komandu
"schetchik" raz.
Dalee dany znacheniya nekotoryh osnovnyh komand adb:
! - vypolnenie komandy shell
$ - razlichnye komandy
/ - pechataet soderzhimoe fajla core
: - upravlenie "tochkoj" ostanova
; - razdelitel' komand
= - pechataet znachenie "tochki"
? - pechataet soderzhimoe fajla a.out
adb vosprinimaet signaly, poetomu nel'zya ispol'zovat' sig-
naly preryvaniya dlya vyhoda iz adb. Dlya vyhoda iz adb dolzhna
byt' ispol'zovana komanda $q ili $Q (ili ctrl-d).
4. OTLADKA SI-PROGRAMM
4.1. Izuchenie obraza pamyati
Rassmotrim Si-programmu, predstavlennuyu na Ris. 1. Oshibki
zaklyuchayutsya v tom, chto simvol e pomeshchaetsya v ukazatel' charp
vmesto stroki, ukazannoj charp, a v funkcii save vmesto
adresa cc ispol'zuetsya ego znachenie.
adb vyzyvaetsya komandoj:
adb prog
Prostejshie dejstviya s adb:
save+4:b
:r out
breakpoint ~save+04: tst -(sp)
$c
~save(03,0177774)
~main(02,0176672)
$C
~save(03,0177774)
8
fd: 03
ptr: 0177774
cc: 04542
~main(02,0176672)
argc: 02
argv: 0176672
fd: 03
Kak vidno iz privedennogo primera byla zadana tochka ostanova
na vhode v funkciyu save i komanda prog zapushchena s argumentom
out. V zadannoj tochke proizoshel ostanov (breakpoint).
Komanda $c vyvela stek vyzovov funkcij i ih argumenty,
Komanda $C sverh etogo vyvela znacheniya lokal'nyh peremennyh.
|ti znacheniya priemlemy. Dlya main, naprimer: 02 = dva argu-
menta, 0176672 = adres v steke vektora parametrov.
Sleduyushchaya komanda raspechatyvaet registry, vklyuchaya programm-
nyj schetchik i komandu v tochke ostanova:
$r
ps 0170004
pc 0310 ~save+04
sp 0176624
r5 0176636
r4 0
r3 04716 _charp
r2 0177113
r1 06
r0 0310
~save+04: tst -(sp)
Komanda:
$e
raspechatyvaet znacheniya vseh vneshnih peremennyh:
$e
_charp: 0177774
Karta pamyati sushchestvuet dlya kazhdogo fajla, rabotayushchego pod
upravleniem adb. Pamyat' dlya fajla a.out raspechatyvaetsya
komandoj ?, a dlya fajla core - s pomoshch'yu komandy /. Bolee
9
togo, sushchestvuet horoshee pravilo: ispol'zovat' ? dlya komand,
a / - dlya dannyh vo vremya prosmotra programm. Dlya togo,
chtoby raspechatat' informaciyu o razmeshchenii peremennyh v
pamyati, vvedite:
$m
Dannaya komanda raspechatyvaet soderzhimoe karty pamyati:
$m
? map `prog'
b1 = 0 e1 = 05510 f1 = 020
b2 = 0 e2 = 05510 f2 = 020
/ map `-'
b1 = 0 e1 = 0100000000 f1 = 0
V dannom primere polezno prosmotret' soderzhimoe stroki, uka-
zannoj ptr. |to mozhno sdelat' sleduyushchim obrazom:
*ptr/s
Dannaya komanda ispol'zuet ptr kak ukazatel' v fajle core i
pechataet informaciyu v vide simvol'noj stroki. Raspechatka
yasno pokazyvaet, chto ptr ukazyvaet ne na nuzhnuyu stroku.
Proverim stroku, na kotoruyu ukazyvaet charp:
*charp/s
Rezul'tat analogichen.
Edinstvennoj operaciej, izmenyayushchej charp mozhet byt' prisvai-
vanie v stroke 15. Oshibka sostoit v ispol'zovanii:
vmesto
*charp = '|';
4.2. Zadanie tochek ostanova
Tochki ostanova zadayutsya v programme s pomoshch'yu komandy:
Komandy:
main+4:b
10
ustanavlivayut tochku ostanova v nachalo etih funkcij. YAzyk Si
ne generiruet metki, poetomu, ne znaya koda, generiruemogo
kompilyatorom Si, tochki ostanova mozhno vstavlyat' tol'ko v
mestah tochek vhoda v funkciyu. Rassmotrennye vyshe adresa
vvodyatsya v vide: simvol+4, s tem chtoby oni poyavlyalis' v ras-
pechatke steka vyzovov funkcij, poskol'ku pervaya komanda kazh-
doj funkcii predstavlyaet soboj vyzov procedury vhoda v funk-
ciyu Si (csv).
Dlya togo, chtoby raspechatat' yachejku, soderzhashchuyu tochku osta-
nova, napechatajte:
$b
Budet ukazan "schetchik" polej. Tochka ostanova, prezhde chem
vyzvat' ostanov, progonyaetsya "schetchik"-1 raz. Pole "komanda"
ukazyvaet adb, kakaya komanda dolzhna vypolnyat'sya kazhdyj raz,
kogda soschitana tochka ostanova.
Sleduyushchaya komanda vosproizvodit na ekrane pyat' komand, nachi-
nayushchihsya v main s adresov kazhdoj vosproizvedennoj yachejki:
main,5?ia
ili
main,5?i
Zadanie tochki ostanova izmenyaet znachenie "tochki"; pri vypol-
nenii programmy pod upravleniem adb znachenie "tochki" ne
izmenyaetsya.
4.3. Zapusk programmy na vypolnenie
Dlya vypolneniya programmy naberite komandu:
:r
CHtoby udalit' tochku ostanova, k primeru vhod v funkciyu save,
napechatajte:
Dlya prodolzheniya vypolneniya programmy iz tochki ostanova,
napechatajte:
:c
Raz programma ostanovilas', komandy adb mogut byt' ispol'zo-
vany dlya vosproizvedeniya na ekran rezul'tata trassirovki
steka:
$C
11
Vypolnenie programmy mozhno prodolzhit' komandoj:
:c
4.4. Signaly
DEMOS otvodit i preryvaet signaly, dejstvuyushchie v samom adb
inache, chem v otlazhivaemoj programme. Esli takoj signal
poyavlyaetsya, to programma ostanavlivaetsya, a upravlenie pere-
daetsya obratno k adb. Signal sohranyaetsya adb i propuskaetsya
v issleduemuyu programmu, esli ispol'zuetsya komanda:
:c
|to mozhet byt' polezno, kogda issledovanie preryvaet proce-
dury programmy upravleniya. Signal ne propuskaetsya v issledu-
emuyu programmu, esli ispol'zuetsya komanda:
:c 0
4.5. Prochie svojstva otladchika
Argumenty i izmeneniya standartnogo vvoda i vyvoda vvodyatsya v
programmu v vide:
:r arg1 arg2 ... << vvfajl >> vyvfajl
CHto unichtozhaet lyubuyu testiruemuyu programmu i zapuskaet fajl
a.out.
Otlazhivaemoj programme mozhet byt' zadan edinichnyj shag:
:s
Esli neobhodimo, dannaya komanda budet zapuskat' komandu,
kotoraya dolzhna byt' otlazhena, i ostanavlivat' ee posle
vypolneniya pervoj komandy.
adb predostavlyaet vozmozhnost' zapuska programmy s ukazannogo
adresa, dlya etogo ispol'zuetsya komanda:
Komanda:
Programma mozhet byt' prodolzhena s adresa, otlichnogo ot tochki
ostanova:
Otlazhivaemaya programma funkcioniruet kak otdel'nyj process i
mozhet byt' udalena komandoj:
12
:k
Komanda:
.=o
pechataet v vos'merichnom kode tekushchij adres (no ne ego soder-
zhimoe). Tekushchij adres (tochka) ispol'zuetsya adb dlya "zapomi-
naniya" tekushchej yachejki. |to pozvolyaet pol'zovatelyu obrashchat'sya
k yachejke, svyazannoj s tekushchim adresom, naprimer:
.-10/d
5. KARTA PAMYATI
DEMOS podderzhivaet neskol'ko formatov vypolnyaemyh fajlov.
Oni ispol'zuyutsya dlya ukazaniya zagruzchiku o tom, kakim obra-
zom zagruzhat' programmnyj fajl. Fajl 407, ispol'zuemyj v
naibolee tipichnyh sluchayah, generiruetsya vyzovom kompilyatora
Si:
cc prog.c
Fajl 410 sozdaetsya komandoj vida
cc -n prog.c
Fajl 411 sozdaetsya komandoj
cc -i prog.c.
adb interpretiruet razlichnye formaty fajla i obespechivaet
dostup k razlichnym segmentam cherez polya karty pamyati.
Dlya pechati karty pamyati ispol'zuetsya komanda:
V fajlah 407 i tekst (komandy) i dannye vzaimosvyazany. |to
ne pozvolyaet adb otdelyat' dannye ot komand, poetomu nekoto-
rye iz napechatannyh simvolicheskih adresov vyglyadyat nekor-
rektno; naprimer, pechat' adresov dannyh kak otklonenie ot
procedur.
V fajlah 410 (razdelennyj tekst) komandy otdelyayutsya ot dan-
nyh, a komanda ?* razreshaet dostup chasti dannyh fajla a.out.
komanda ?* govorit adb o tom, chto nuzhno ispol'zovat' vtoruyu
chast' karty pamyati v fajle a.out. Dostupnye dannye v fajle
core predstavlyayut soboj dannye, modificirovannye pri vypol-
nenii programmy. Zametim takzhe, chto segment dannyh mozhet
vozrastat' vovremya vypolneniya programmy.
13
V fajlah 411 (s razdelennym i i d prostranstvom) komandy i
dannye takzhe otdeleny drug ot druga. V etom sluchae, odnako,
poskol'ku dannye raspredelyayutsya cherez otdel'nyj nabor seg-
mentiruyushchih registrov, osnovanie segmenta dannyh takzhe soot-
vetstvuet adresnomu nulyu. V etom sluchae, poskol'ku adresa
perekryvayutsya, neobhodimo ispol'zovat' operator ?* dlya polu-
cheniya dostupa k oblasti dannyh fajla a.out. v fajlah 410 i
411 sootvetstvuyushchij fajl core ne soderzhit teksta programmy.
Primer pokazyvaet vyvod na ekran tri raspredeleniya odnoj i
toj zhe programmy, svyazannoj kak 407, 410, 411 sootvetst-
venno:
adb map407 core407
$m
text map 'map407'
b1 = 0 e1 = 0256 f1 = 020
b2 = 0 e2 = 0256 f2 = 020
data map 'core407'
b1 = 0 e1 = 0300 f1 = 02000
b2 = 0175400 e2 = 0200000 f2 = 02300
$v
variables
d = 0300
m = 0407
s = 02400
$q
adb map410 core410
$m
text map 'map410'
b1 = 0 e1 = 0200 f1 = 020
b2 = 020000 e2 = 020116 f2 = 0220
data map 'core410'
b1 = 020000 e1 = 020200 f1 = 0200
b2 = 0175400 e2 = 0200000 f2 = 02200
$v
variables
b = 020000
d = 0200
m = 0410
s = 02400
t = 0200
$q
adb map411 core411
$m
text map 'map411'
b1 = 0 e1 = 0200 f1 = 020
b2 = 0 e2 = 0116 f2 = 0220
data map 'core411'
b1 = 0 e1 = 0200 f1 = 02000
b2 = 0175400 e2 = 0200000 f2 = 02200
$v
variables
14
d = 0200
m = 0411
s = 02400
t = 0200
$q
Polya b, e i f ispol'zuyutsya adb dlya raspredeleniya adresov po
adresam fajlov. Pole f1 - eto razmer zagolovka v nachale kazh-
dogo fajla (020 bajtov dlya fajla a.out i 02000 bajtov dlya
fajla core). Pole f2 predstavlyaet soboj perehod iz nachala
fajla v oblast' dannyh. Dlya fajla 470 so smeshannymi tekstom
i dannymi eto yavlyaetsya tem zhe, chto i razmer zagolovka; dlya
fajlov 410 i 411 - eto razmer zagolovka plyus razmer porcii
teksta.
Polya b i e nachinayut i zakanchivayut yachejki, otvodimye pod seg-
ment. Zadayushchaya adres yachejka a v fajle vychislyaetsya sleduyushchim
obrazom:
esli b1<=a<=e1, to adres fajla = (a-b1)+f1
esli b2<=a<=e2, to adres fajla = (a-b2)+f2
Pol'zovatel' mozhet poluchit' yachejki, ispol'zuya opredelennye
adb peremennye. Komanda $v pechataet peremennye, inicializi-
ruemye adb:
b bazovyj adres segmenta dannyh
d razmer segmenta dannyh
s razmer steka
t razmer teksta
m vypolnyaemyj tip (407, 410, 411)
V primere otsutstvuyushchie peremennye polagayutsya ravnymi nulyu.
Dannye peremennye mogut ispol'zovat'sya kak vyrazheniya, dlya
etogo v adresnom pole primenyaetsya komanda:
<<b
Podobnym zhe obrazom znachenie peremennoj mozhet byt' izmeneno
s pomoshch'yu komandy:
02000>>b
ustanavlivayushchej b v znachenie 2000 (v vos'merichnom kode).
Znacheniya etih peremennyh polezno znat', esli issleduemyj
fajl yavlyaetsya vypolnyaemym ili fajlom obraza pamyati core.
Dlya nahozhdeniya znachenij dannyh peremennyh adb schityvaet
zagolovok fajla obraza pamyati core. Esli vtoroj ukazannyj
fajl ne yavlyaetsya fajlom core, ili esli on otsutstvuet, to
vmesto nego ispol'zuetsya zagolovok vypolnyaemogo fajla.
15
6. DOPOLNITELXNOE ISPOLXZOVANIE
V adb sushchestvuet vozmozhnost' ob®edinyat' komandy formatirova-
niya dlya obespecheniya zaranee razrabotannogo vyvoda. Nizhe pri-
vedeno neskol'ko primerov.
6.1. Sformatirovannyj damp
Stroka:
<<b,-1/4o4^8Cn
pechataet 4 slova v vos'merichnom kode, za kotorymi sleduet ih
interpretaciya v KOI-8, iz oblasti dannyh fajla obraza
pamyati. Razlichnye chasti komandy oznachayut:
<<b bazovyj adres segmenta dannyh;
<<b,-1
pechataet, nachinaya s bazovogo adresa do konca fajla.
Zdes' i v ostal'nyh sluchayah otricatel'nyj schetchik
ispol'zuetsya dlya beskonechnogo cikla ili poka ne budet
obnaruzheno kakoe-libo oshibochnoe uslovie (kak, naprimer,
konec fajla).
Format 4o4^8Cn sostoit iz sleduyushchih komponent:
pechataet 4 yachejki v vos'merichnom kode
vozvrashchaet . na 4 slova nazad
pechataet 8 posledovatel'nyh simvolov, ispol'zuya vyhod-
noe otnoshenie; kazhdyj simvol, nahodyashchijsya v diapazone
ot 0 do 037 pechataetsya kak @, za kotorym sleduet soot-
vetstvuyushchij simvol iz diapazona 0140 - 0177. @ pechata-
etsya kak @@.
pechataet simvol novoj stroki.
Komanda:
<<b,<<d/4o4^8Cn
ispol'zuetsya ne dlya razresheniya pechati, a dlya ostanovki v
konce segmenta dannyh (<<d vydaet razmer segmenta dannyh v
bajtah).
Komandy redaktirovaniya mogut byt' ob®edineny s vozmozhnost'yu
adb schityvat' komandy iz fajla. adb vyzyvaetsya sleduyushchim
obrazom:
adb a.out core<dump
16
Dannaya komanda schityvaet dump. Primer takogo fajla:
120$w 4095$s $v =3n
$m =3n "obratnaya trassirovka Si-steka"
$C =3n "vneshnie peremennye Si" $e
=3n "registry" $r 0$s =3n
"segment dannyh" <<b,-1/8ona
Komanda 120$w ustanavlivaet shirinu vyvoda ravnoj 120 simvo-
lam (obychno, shirina ravna 80 simvolam).
adb pechataet adresa v vide:
simvol+otklonenie
Komanda 4095$s sokrashchaet maksimal'no dopustimoe otklonenie
do blizhajshego simvolicheskogo adresa ot 255 (po umolchaniyu) do
4095. Komanda = mozhet byt' ispol'zovana dlya pechati doslovnyh
strok. Zagolovki v programme dump obespechivayutsya komandoj
formy:
=3n obratnaya trassirovka Si-steka""
kotoraya propuskaet tri stroki i pechataet doslovno stroku.
Komanda $v pechataet vse nenulevye znacheniya peremennyh adb.
Komanda 0$s ustanavlivaet maksimal'noe otklonenie ot soot-
vetstviya simvolov na nol', tem samym podavlyaya pechat' simvo-
licheskih metok v vos'merichnom kode. Obratite vnimanie: eto
vypolnyaetsya tol'ko dlya pechati segmenta dannyh. Komanda:
<<b,-1/8ona
pechataet damp nachinaya s bazovogo adresa segmenta dannyh do
konca fajla s adresnym polem v vos'merichnom kode i vosem'yu
vos'merichnymi chislami na stroku.
6.2. Damp kataloga
V kachestve eshche odnoj illyustracii rassmatrivaetsya nabor
komand, prednaznachennyh dlya polucheniya dampa soderzhimogo
kataloga (kotorye sostoyat iz celochislennogo i-uzla (indeks
fajla), za kotorym sleduet imya, sostoyashchee iz 14 simvolov):
adb dir -
=n8t"/fII-fajl/fR"8t"/fIimya/fR"
0,-1?u8t14cn
V dannom primere u pechataet i-uzel/fR kak bezznakovoe celoe
desyatichnoe chislo, 8t oznachaet, chto adb budet delat' propuski
do sleduyushchej vyhodnoj stroki, nomer kotoroj kraten 8, a
14c/fB pechataet imya fajla, sostoyashchee iz 14 simvolov.
17
6.3. Preobrazovanie znachenij
adb mozhet ispol'zovat'sya dlya preobrazovaniya znachenij iz
odnogo predstavleniya v drugoe. Naprimer:
072=odx
Dannaya komanda vyvodit na pechat':
072 58 #3a
CHto sootvetstvuet vos'merichnomu, desyatichnomu i shestnadcate-
richnomu predstavleniyam chisla 072 (v vos'merichnom kode). For-
mat zapominaetsya s tem, chtoby pri pechati posledovatel'nyh
chisel, vyvod na pechat' osushchestvlyalsya by v dannyh formatah.
Znacheniya simvolov mogut byt' preobrazovany podobnym zhe obra-
zom, naprimer:
'a' = co
dannaya komanda vyvodit na pechat':
|to mozhet takzhe ispol'zovat'sya dlya ocenki vyrazhenij, no
bud'te ostorozhny, tak kak vse binarnye operatory imeyut odi-
nakovyj prioritet, kotoryj nizhe, chem dlya unarnyh operatorov.
7. ISPRAVLENIE OSHIBOK
Fajly ispravleniya oshibok vyzyvayutsya s otladchikom adb s
pomoshch'yu komandy write, w ili W (kotoraya, odnako, ne to zhe
samoe, chto komanda write redaktora ed). |ta komanda chasto
ispol'zuetsya vmeste s komandoj locate, l ili L. V obshchem slu-
chae sintaksis komand l i w imeet vid:
?l znachenie
Komanda l ispol'zuetsya dlya proverki na sootvetstvie dvuh
bajtov, L ispol'zuetsya dlya chetyreh bajtov. Komanda w
ispol'zuetsya dlya zapisi dvuh bajtov, togda kak W zapisyvaet
chetyre bajta. Pole "znachenie" v komandah locate ili write
predstavlyaet soboj vyrazhenie. Sledovatel'no, podderzhivayutsya
desyatichnye i vos'merichnye chisla ili stroki simvolov.
S cel'yu modifikacii fajla, adb dolzhen byt' vyzvan v sleduyu-
shchem vide:
adb -w fajl1 fajl2
Pri vyzove s dannoj opciej, esli neobhodimo, fajly fajl1 i
fajl2 sozdayutsya i otkryvayutsya dlya chteniya i zapisi.
18
Dlya primera mozhno izmenit' slovo this na the v vypolnyaemom
fajle ispol'zuya sleduyushchie komandy:
adb -w ex7 -
?l'th'
?W'the'
Komanda ?l Startuet v tekushchem znachenii tochki, a ostanavliva-
etsya na pervom poyavlenii th, ustanavlivaya tochku na adres
najdennoj yachejki. Obratite vnimanie na ispol'zovanie
komandy ? Dlya zapisi v fajl a.out. komanda vida ?* budet
ispol'zovat'sya dlya fajla 411.
CHashche vsego komanda budet imet' vid:
?l'th';?s
Ona obnaruzhivaet pervoe poyavlenie "th" i raspechatyvaet vsyu
stroku. Vypolnenie dannoj komandy adb budet ustanavlivat'
tochku na adres simvolov "th".
V kachestve primera ispol'zovaniya svojstva ispravleniya oshi-
bok, rassmotrim Si-programmu, imeyushchuyu vnutrennij logicheskij
flag. Flag mozhet ustanavlivat'sya pol'zovatelem cherez adb,
posle etogo proishodit vypolnenie programmy. Naprimer:
adb a.out -
:s arg1 arg2
:c
Komanda :c obychno ispol'zuetsya dlya naznacheniya edinichnogo
shaga prohozhdeniya processa ili zapuska processa v rezhime edi-
nichnogo shaga. V etom sluchae ona zapuskaet a.out Kak podpro-
cess s argumentami arg1 i arg2. Esli funkcioniruet podpro-
cess, to adb zapisyvaet v nego inache, chem v fajl, poetomu
komanda w vyzyvaet izmenenie flaga v pamyati podprocessa.
8. ZAMECHANIYA
Vyzovy i argumenty funkcii pomeshchayutsya v stek s pomoshch'yu pro-
cedury sohraneniya. Pomeshchenie tochek ostanova v tochki vhoda v
procedury oznachaet, chto funkciya poyavlyaetsya ne dlya togo,
chtoby byt' vyzvannoj pri obnaruzhenii tochki ostanova.
Pri pechati adresov adb ispol'zuet simvoly libo teksta, libo
dannyh iz fajla a.out. |to inogda vyzyvaet pechat' neissledu-
emyh simvolicheskih imen vmeste s dannymi (naprimer,
savr5+022). |togo ne sluchaetsya, esli ispol'zuetsya komanda ?
dlya teksta (komand) i / dlya dannyh.
adb ne mozhet upravlyat' registrovymi peremennymi yazyka Si v
samyh poslednih sluchayah aktivizacii funkcii.
19
SODERZHANIE
ANNOTACIYA ......................................... 2
1. NAZNACHENIE PROGRAMMY ADB .......................... 3
2. RABOTA S KOMPILYATOROM SI .......................... 3
3. VYPOLNENIE PROGRAMMY ADB .......................... 5
3.1. Vyzov programmy ................................. 5
3.2. Issledovanie pamyati ............................. 5
3.3. Tekushchij adres ................................... 5
3.4. Vyrazheniya ....................................... 6
3.5. Formaty ......................................... 6
3.6. Osnovnye znacheniya komand ........................ 7
4. OTLADKA SI-PROGRAMM ............................... 7
4.1. Izuchenie obraza pamyati .......................... 7
4.2. Zadanie tochek ostanova .......................... 9
4.3. Zapusk programmy na vypolnenie .................. 10
4.4. Signaly ......................................... 11
4.5. Prochie svojstva otladchika ....................... 11
5. KARTA PAMYATI ...................................... 12
6. DOPOLNITELXNOE ISPOLXZOVANIE ...................... 15
6.1. Sformatirovannyj damp ........................... 15
6.2. Damp kataloga ................................... 16
6.3. Preobrazovanie znachenij ......................... 17
7. ISPRAVLENIE OSHIBOK ................................ 17
8. ZAMECHANIYA ......................................... 18
Last-modified: Mon, 29 Jun 1998 13:53:57 GMT