Ocenite etot tekst:








          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


$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

    _environ: 0176700

    __ediag: 0

_charp: 0177774

    __iob: 06510

    __sobuf: 0

    __lastbu: 05462

    __sibuf: 0

    _end: 0

    _errno: 0

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'
/ map `-' 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:

    charp = '|';

vmesto *charp = '|'; 4.2. Zadanie tochek ostanova Tochki ostanova zadayutsya v programme s pomoshch'yu komandy:
Komandy: main+4:b

    save+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 ... <&lt; vvfajl >&gt; 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:

    adres:r

Komanda: Programma mozhet byt' prodolzhena s adresa, otlichnogo ot tochki ostanova:

    adres:c

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:

    _m

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: <&lt;b Podobnym zhe obrazom znachenie peremennoj mozhet byt' izmeneno s pomoshch'yu komandy: 02000>&gt;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: <&lt;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: <&lt;b bazovyj adres segmenta dannyh; <&lt;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: <&lt;b,<&lt;d/4o4^8Cn ispol'zuetsya ne dlya razresheniya pechati, a dlya ostanovki v konce segmenta dannyh (<&lt;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" <&lt;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: <&lt;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':

    a 0141

|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

    flag/w 1

: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
Ocenite etot tekst: