Kuidas silur töötab. Näide programmide silumisest Millega me välja mõtlesime

Vaatleme programmi silumise protsessi, mis lahendab võrrandi kujul AX+B=0 ilma andmeid faili salvestamata (ülesannete kirjeldust vt 3. peatükis). Eeldame, et vorm sisaldab ainult neid elemente, mis on paigutatud vahekaardile “Andmed” (joonis 3.5) ja sellel on vorm (joonis 8.6). TBA ja TBB koefitsientide sisestamise tekstiakende nimed, samuti LBX juure kuvamise sildi nimi paigutatakse määratud objektide graafiliste kujutiste sisse. Käsunuppudele on määratud nimed CB1, CB2 ja CB3. Andmete nimetused A, B, X koefitsientide a, b ja juur X jaoks. Sisend- ja väljundandmed


SISSEPÄÄS

Riis. 8.7. Programmi P-graafik


Tabel 8.1 Sümbolid joonisel Fig. 8.7 Tingimused Tegevused Protseduur InDan() Rakendatud vormijuhtimise objektide abil Sama Sama
Programmi lõpetamise nuppu vajutatud Vajutatud CB2 "Root" nuppu Vajutatakse nuppu CB1 "Tühjenda". Sisestatud on märk, mida saab lugeda numbrite sisestamisel kehtivaks Andmete lähtestamine (neile algväärtuste määramine) Saadaoleva nupu vajutamine, hiire klõpsamine või tähemärgi tippimine TVA objekti valimine TVV objekti valimine
Määramine Välju Juur Selge Sisestatud numbri sümbol Selles Käsu sisestamine TBA aktiveerimine TBB aktiveerimine
Tabeli jätk. 8.1 Rakendusprotseduur (funktsioon) MessX funktsiooni ja määramise operaator Rakendatud tekstikasti objektiga Protseduur ProgEnd osariigid
Vastav toiming või tingimus Võrrandi juure arvutamine ja väljund LBX-sildile Sümboli lisamine TVA.Tech Sümboli lisamine TVV.Tech Programmi täitmine Programm on käivitunud, ekraanil on näha vorm, oodatakse käsu või sümboli sisestamist Vorm on ekraanil nähtav, käsk sisestatakse Arvutatakse koefitsiendid ja juur, genereeritakse teade juure kohta Klaviatuuri puhvrisse on sisestatud suvaline märk
Määramine LBX.Caption=MessX Simb® TBA.Tekst Simb® TBB.Tekst Pea prog Sissepääs, 1

Programmi struktuur



Mooduli, objekti, sektsiooni nimi Sisu
OpDan Andmete kirjeldus a,b,x Avalik a üksik: Avalik b üksikuna: Avalik x üksik
Vorm Vorm1
Üldosa Sub InDan() "Andmete lähtestamine I=MsgBox("Andmeid lähtestatakse", vbOkOnly,"") End sub NullDan() "Vormi ja andmete tühjendamine I=MsgBox("Vormi ja andmete kustutamine", vbOkOnly,"") Lõpp alamfunktsioon MessX() "Juure arvutamine I=MsgBox("Arvutatud a=10, b=5, x=-2", vbOkOnly,"") MessX= "-2" Lõppfunktsioon Sub EndProg() "Lõpp programm I=MsgBox ("Programm lõpetatud", vbOkOnly, "") Lõpeta alam
Vorm 1 Sub Form1_Load() "Vormi laadimine Call InDan End sub Sub Form1_Unload "Vormi mälust mahalaadimine Call EndProg() End sub
CB1 Sub CB1_Click() "Klõpsates nuppu Clear Call NullDan End sub
CB2 Sub CB1_Click() "Nupul klõpsamine Root LBX.Caption=MessX() Lõpeta alam
CB3 Sub CB3_Click() "lõpeta programm Call EndProg End End sub

Riis. 8.8. Programmi struktuur

Selle programmikoodiga liidese testimine. Programm peaks reageerima nuppude klõpsamisele vastavate teadete kuvamisega, tekstikasti objektidel klõpsamine peaks viima kursori objektide sisse, tähemärgi sisestamine peaks muutma aktiivse tekstikasti objekti sisu. Liidese testimise kaart on näidatud tabelis. 8.2.

Tabel 8.2

Liidese testimise kaart

Testi nimi Programmeerija tegevused Programmi reaktsioon
Alusta Programmi käivitamine Ekraanile ilmub vorm ja aken teatega "Andmeid lähtestatakse".
TVA initsialiseerimine Kursor asetatakse TVA-sse
TVA initsialiseerimine Kursor asetatakse TVB-sse
Tähemärkide sisestamine Vajutage tähtnumbrilisi klahve Sisestatud märgid lisatakse aktiivse tekstiakna sisule. Kui vajutate tagasilükkeklahvi, kustutatakse aknas parempoolne märk
Puhastamine Ilmub teade "Vormi tühjendamine".
Arvutus Ilmub teade "Arvutatud a=10, b=5, x= -2".
Programmi täitmine

Programmi testimine programmeerija protseduuride ja funktsioonide tasemel toimub protseduuride ja funktsioonide koodi kirjutamisel. Sellise testimise jaoks saate luua spetsiaalse silumisvormi koos nuppudega protseduuride kutsumiseks ja muuta see lähtevormiks. Sel juhul sellist vajadust pole, sest põhivorm on selleks otstarbeks üsna sobiv.

Sub InDan() "Andmete lähtestamine OpDan.a=0: OpDan.b=0: OpDan.x=0 TBA.Text="": NBB.Text="" LBX.Caption="" I=MsgBox("Andmete lähtestamine "+str(OpDan.a)+" "+str(OpDan.b) +" "+str(OpDan.x), vbOkOnly,"") end sub Joon. 8.9. Protseduuri InDan() tekst silumise ajal Alustame InDani protseduuriga. Protseduuri eesmärk on andmete lähtestamine ja vormi tühjendamine. Protseduuri tekst silumisperioodil on näidatud joonisel fig. 8.9. Protseduuri testimise tulemusena peaksid saavutama järgmised tulemused: OpDan mooduli muutujad a, b, x peaksid saama väärtuse null, tekstikastid ja LBX silt peaksid olema tühjad.
Sub NullDan() "Vormi ja andmete kustutamine OpDan.a=0: OpDan.b=0: OpDan.x=0 TBA.Text="": NBB.Text="" LBX.Caption="" I=MsgBox(" Vormi ja andmete tühjendamine" +str(OpDan.a)+""+str(OpDan.b)+"" +str(OpDan.x), vbOkOnly,"") Lõpus alam Joonis 8.10. NullDan( tekst ) protseduur silumishetkel Järgmisena silume vormi puhastamise protseduuri. Selle tekst silumise ajal on näidatud joonisel fig. 8.10. Protseduuri teksti saab kopeerida InDan protseduurist, kuna see täidab sarnast eesmärki. Sel juhul on täiesti võimalik, et kahe protseduuri asemel on üks. Silumisprotseduuri tulemuseks on OpDani moodulis kirjeldatud andmete nullväärtused ning tühjad tekstiaknad ja LBX silt.
Mõlema protseduuri silumisprotsess on sama. Programmi täitmiseks käivitades saate sõnumite abil jälgida protseduuride õiget täitmist. Valede tulemuste ilmumisel saate lülituda samm-sammult režiimile ja hoides kursorit andmete nimede kohal, juhtida arvutuste tulemusi. Samuti on võimalik kasutada samm-sammult režiimi koos kellade akna kaasamisega, kuhu tuleks lisada ülaltoodud muutujate nimed.
Funktsioon MessX() "Juur Dim S arvutamine stringina OpDan.a=val(TBA.Text) OpDan.b=val(TBB.Text) Kui a<>0 siis S=str(-b/a) Elseif ((a=0) ja (b=0)) siis S="Ebakindel juur" Elseif ((a=0) ja (b=0)) siis S=" Juur ei eksisteeri" Lõpeta, kui MessX= S TBA.Tekst = str(OpDan.a) TBB.Tekst = str(OpDan.b) LBX.Caption = str(OpDan.b) I=MsgBox("A, b, x arvutatakse ", vbOkOnly,"") Lõppfunktsioon Joon. 8.11. Funktsiooni MessX tekst silumise ajal Funktsiooni MessX silumine (joonis 8.10) toimub samm-sammult, kus kursor asetatakse funktsiooni teksti esimesele lausele. Soovitav on lülitada sisse aknad Watches ja Locals ning lisada neist esimesse OpDan moodulist muutujate nimed ning teises kuvatakse muutuja S väärtus Silumiseks kasutatakse kolme andmekomplekti: · a= 10,6, b = 31,8; · a=0, b=0; · a=0, b=10. Programm käivitatakse käsuga "Debug/Run to Cursor". Andmekogumid sisestatakse vormiakende kaudu. Programmi täitmine katkestatakse lausega OpDan.a=val(TBA.Text). Järgmisena käivitame käsu "Debug/Step Into" abil programmi samm-sammult ja jälgime muutujate väärtusi.

Esimene andmekogum käivitab avalduse täitmise S=str(-b/a), teine ​​– operaator S="Määramata juur", kolmas – operaator S="juurt ei eksisteeri". Esimesel juhul on juure väärtus (– 3). Koefitsientide ja juure arvutatud väärtusi saab jälgida tekstiakende vormil ja LBX sildil.

Täidetud programmikoodi testimine toimub vastavalt programmi testimise kaardile (tabel 8.3).

Tabel 8.3

Programmi testimise kaart

Testi nimi Programmeerija tegevused Programmi reaktsioon
Alusta Programmi käivitamine Ekraanile ilmuvad vorm ja MsgBoxi aken teatega "Andmeid lähtestatakse"
TVA initsialiseerimine Klõpsates hiirega TBA tekstiväljal Kursor asetatakse TVA-sse
TVA initsialiseerimine Klõpsates hiirega TBB tekstiväljal Kursor asetatakse TVB-sse
Andmekogumi sisestamine Sisestage andmekogum · a=10,6, b=31,8; · a=0, b=0; a = 0, b = 10,2 Sisestatud andmed kuvatakse aktiivses tekstiaknas (TBA või TVB). Klahv "Tagasi2" peab olema aktiivne
Puhastamine "Klõpsake" hiirega nupul "Tühjenda". Ilmub teade "Vormi tühjendamine", seejärel tühjendatakse tekstikastid ja LBX silt
Arvutus "Klõpsake" hiirega nupul "Juur". Ilmub teade “A, b, x on arvutatud”, koefitsientide ja juurte arvutatud väärtused ilmuvad vormile
Tagasi Korrake puhastamise, andmesisestuse ja arvutamise teste üksteise järel. Vorm tühjendatakse, andmed sisestatakse, juur arvutatakse, koefitsiendid kuvatakse (uuesti) ja juur
Programmi täitmine "Klõpsake" hiirega nupul "Välju" või nupul "X". Ilmub teade "Programm on lõpetatud".

Järgmisena eemaldame protseduuride ja funktsioonide tekstist tavalises kirjas näidatud väited ning testime programmi uuesti vastavalt programmi testimise kaardile. Tulemused peaksid olema identsed, kuid silumissõnumeid ei tohiks olla.

8.2. Paigalduskomplekti koostamine
tarkvara tööriist

Pärast tarkvara silumise töö lõpetamist on selle käivitatava koodi hankimine üsna lihtne. Seda saab ehitada kahel kujul: iseseisva käivitatava koodina ja P-koodina (pseudokood), mis nõuab programmi käivitamiseks Visual Basicuga kaasas olevat faili. Esimene kood on pikem, kuid võib töötada ilma Visual Basicu süsteemi lisadeta, teine ​​kood on lühem, kuid nõuab määratud faili olemasolu. Tavaliselt eelistatakse esimest varianti. Kompileerimismeetod on määratud aknas "Projekti atribuudid".

Installimiskomplekti (levitamise) koostamiseks käivitatakse spetsiaalne rakendus (Application SetupWizard for Visual Basic 5 ja Package and Deployment Wizard for Visual Basic 6). Distributsiooni loomise protsess toimub interaktiivselt mitmes etapis. Rakenduse häälestusviisardi rakendusakende üldvaade on näidatud joonisel fig. 8.12.

A) b) Joon. 8.12. Rakenduse häälestusviisardi aknad "Projekti valimine ja konfigureerimine" (a) ja "Levitusmeetod" (b) Rakenduse häälestusviisardi esimene aken kuvab mitmesuguseid teateid, eriti programmi eesmärgi ja selle peamiste toimingute kohta. Seda akent siin ei kuvata. Järgmine samm on loodava installikomplekti projekti valimine ja rakenduse konfigureerimine. Selleks kasutatakse akent “Projekti valik ja sätted” (joonis 8.12a). See aken määrab projektifaili tee ja suvandid, mis võimaldavad avada installiprogrammi sõltuva faili loomisega või ilma, luua Interneti-levitamiseks levikomplekti ja luua lihtsalt sõltuva faili. Järgmises aknas "Levitamismeetod" (joonis 8.12, b) valite komplekti kandjale paigutamise meetodi: ühele disketile, kõvaketta ühte kataloogi CD-ROMile kopeerimiseks või mitmesse kataloogi nimed Disk1, Disk2, ..., et luua diskettide komplekt.
A) b) Joon. 8.13. Rakenduse häälestusviisardi aknad "Sihtkataloog" (a) ja "Tulemusfail" (b) Järgmises aknas valite sihtkataloogi, mis sisaldab loodavat installikomplekti. See aken määrab ketta ja installikomplekti failide tee. Kaustapuu võimaldab teil valida soovitud faili määratud tee. Järgmine viisardi aken määrab serveri ja kohalikud ActiveX-i komponendid. Seda akent pole joonisel näidatud. Rakenduse “Final File” eelviimases aknas (joonis 8.13b) kuvatakse projektifailidele lisatud failid. Reeglina on need *.dll teegid. Rakenduse häälestusviisard loob automaatselt loendi failidest, mis tuleb komplekti lisada. Võimalik on lisada oma faile, välja arvatud need, mille rakendus lisab automaatselt. Kaks viimast akent kuvavad teateid, mis näitavad, et komplekt on kokku pandud ja rakendus on lõpetatud. Need aknad

on tähelepanuväärsed ja neid ei ole kasutusjuhendis näidatud.

Koostajad (koostajad) ja linkide toimetajad.

Need kaks programmiklassi tuleks ühendada, sest Iga kaasaegne kompilaator sisaldab lingiredaktorit.

Kompilaator (assembler) genereerib objektikoodi, tõlkides programmi programmeerimiskeelest (assemblerkeelest), toimetaja genereerib käivitatava faili, kogudes objekti- ja teegifaile ning redigeerides ristviiteid.

Kompilaatorite jaoks saate määrata järgmised omadused:

Keel, millest koostatakse;

Murde/keelestandard;

Riistvaraplatvormid ja OS, mille jaoks saab luua objekti ja käivitatava faili;

Koodi optimeerimise kättesaadavus ja kvaliteet;

Toetatud objektide, teegi ja käivitatavate failide vormingud;

Esindajad: C/C++: Intel C++ Compiler, Borland C++ Compiler, Watcom C++, GNU C.

Pascal: vaba Pascal, GNU Pascal.

Tekstiredaktorid.

Mõeldud programmitekstide sisestamiseks ja parandamiseks. Need võivad olla üldised või mõeldud konkreetsete keelte või keskkondade toetamiseks.

Omadused:

Töödeldud failide vormindamine ja kodeerimine;

Lekseemide esiletõstmise võimalus tekstis;

Oskus toetada teksti vormindamist vastavalt keeleparadigmadele;

Võimalus kutsuda koostamisprotsessi otse toimetajast;

Võimalus genereerida osa programmi tekstist (sagedamini juhtub see mitte toimetajate, vaid keskkondadega).

Silujad.

Mõeldud vigade leidmiseks teistes programmides, operatsioonisüsteemi tuumades, SQL päringutes ja muud tüüpi koodides. Silur võimaldab teil teostada samm-sammult jälgimist, jälgida, määrata või muuta muutujate väärtusi koodi käitamise ajal, määrata ja eemaldada katkestuspunkte või peatumistingimusi, jälgida protsessori oleku muutusi programmi töötamise ajal jne. .

Silureid on kahte peamist tüüpi:

Kasutajarežiimi silujad;

Kerneli režiimi silujad.

Esimesed saavad jälgida ainult kasutajarežiimi programmide tööd ja ei suuda jälgida süsteemikutseid ega jälgida kerneli tööd. Lisaks tuleb selliste silurite kasutamiseks programm vastavalt ette valmistada (kompileerida).

Kerneli režiimi silujad, vastupidi, võimaldavad teil täielikult kontrollida süsteemi ja seega ka kõigi programmide tööd.

Omadused:

Tüüp (kerneli/kasutaja režiim);

Sümboolse silumise tugi (võimalus lugeda programmi lähtekoode ja nendega töötada). Toetatud keelte komplekt (keskkonnad/murded);

Kuvatava teabe komplekt: protsessori registrid, pinu, mälu (mälu sisu kuvamise režiimid);

Toetatud silumisrežiimid: samm-sammult, katkestuspunktidega, reageerimine süsteemi sündmustele;

Jälgitavate sündmuste koosseis süsteemis: riistvarakatkestused, väljakutsed draiverile (teine ​​kerneli moodul), funktsioonikutsed jne.

- (tavaliselt kernelirežiimi siluritele) nõuded riistvara toele, võime töötada "reaalajas" süsteemis;

Võime analüüsida dump faile.

Esindajad:

Kasutajarežiimi silujad: Turbo Silur (Borland Software Corporation), Cool Silur (Wei Bao), W32Dasm, AQtime, FlexTracer, GNU silur.

Kerneli režiimi silujad: i386kd/alphakd/ia64kd ja WinDbg (Microsoft Corporation) (reaalajas töötamiseks on vaja 2 masinat. Sellest piirangust mööda hiilimiseks on lisandmoodul LiveKd (Mark E. Russinovich)), SoftIce (NuMega).

Programmi silumine

Silumine- arvutiprogrammi arendamise etapp, kus vead avastatakse, lokaliseeritakse ja kõrvaldatakse. Et mõista, kus viga ilmnes, peate:

  • saate teada muutujate praegused väärtused;
  • saate teada, kuidas programm käivitati.

On kaks üksteist täiendavat silumistehnoloogiat.

  • Silurite kasutamine – programmid, mis sisaldavad kasutajaliidest programmi samm-sammult täitmiseks, lause lause haaval, funktsioon funktsiooni haaval, peatumine teatud lähtekoodi ridadel või teatud tingimuse saavutamisel.
  • Programmi hetkeseisu väljastamine programmi kriitilistes punktides asuvate väljundlausete abil - ekraanile, printerisse, valjuhääldisse või faili. Silumisteabe väljastamist faili nimetatakse logimiseks.

Silumise koht programmi arendustsüklis

Tüüpiline arendustsükkel, mida korratakse programmi eluea jooksul mitu korda, näeb välja umbes selline:

  1. Programmeerimine - programmi uute funktsionaalsuste sisseviimine, olemasolevate vigade parandamine.
  2. Testimine (käsitsi või automatiseeritud; programmeerija, testija või kasutaja poolt; “suitsu”, musta kasti režiimis või modulaarne...) - vea tuvastamine.
  3. Vea reprodutseerimine – vea tekkimise tingimuste väljaselgitamine. See võib olla keeruline paralleelsete protsesside programmeerimisel ja ebatavaliste vigade korral, mida nimetatakse Heisenbugideks.
  4. Silumine- vea põhjuse tuvastamine.

Tööriistad

Programmeerija silumisvõime on tõenäoliselt kõige olulisem tegur probleemi allika avastamisel, kuid silumise raskus sõltub suuresti programmeerimiskeelest ja kasutatavatest tööriistadest, eriti siluritest.

Silumistööriistad

Siluja on tarkvaratööriist, mis võimaldab programmeerijal jälgida uuritava programmi täitmist, seda peatada ja taaskäivitada, käivitada aegluubis, muuta mälus olevaid väärtusi ja mõnel juhul isegi ajas tagasi minna.

Programmeerija käes võivad kasulikud tööriistad olla ka järgmised:

  • Profileerijad. Need võimaldavad teil määrata, kui kaua teatud koodijao käivitamine aega võtab, ja katvuse analüüs võimaldab tuvastada mittekäivitatavaid koodiosi.
  • API logijad võimaldavad programmeerijal jälgida programmi ja Windows API interaktsiooni, salvestades logisse Windowsi teated.
  • Demonteerijad võimaldavad programmeerijal vaadata käivitatava faili koostekoodi
  • Nuusutajad aitavad programmeerijal jälgida programmi genereeritud võrguliiklust
  • Riistvaraliidese nuusutajad võimaldavad teil näha süsteemi ja seadme vahel vahetatavaid andmeid.
  • Süsteemi logid.

Vahendid, mis vähendavad silumise vajadust

Teine suund on tagada, et silumist oleks vaja võimalikult vähe. Sel eesmärgil:

  • Lepinguline programmeerimine - et programmeerija kinnitaks muul viisil, et tal on väljundis vaja täpselt sellist programmi käitumist. Keeltes, millel pole lepingulist programmeerimist, kasutab programm põhipunktides enesekontrolli.
  • Ühiktestimine on programmi käitumise testimine osade kaupa.
  • Staatiline koodianalüüs - koodi kontrollimine, et tuvastada "järelevalvamisest tingitud" standardvigu.
  • Kõrge programmeerimiskultuur, eelkõige disainimustrid, nimetamisreeglid ja üksikute koodiplokkide läbipaistev käitumine – deklareerida endale ja teistele, kuidas see või teine ​​funktsioon peaks käituma.
  • Tõestatud väliste raamatukogude laialdane kasutamine.

Koodi turvalisus ja silumine

Programmikood võib sisaldada nn dokumenteerimata käitumist – tõsiseid tõrkeid, mis programmi tavapärasel täitmisel ei ilmne, kuid on suunatud rünnaku korral väga ohtlikud kogu süsteemi turvalisusele. Enamasti on see programmeerija vigade tagajärg. Tuntuimad näited on SQL-i süstimine ja puhvri ületäitumine. Sel juhul on silumisülesanne järgmine:

  • Süsteemi dokumenteerimata käitumise tuvastamine
  • Ebaturvalise koodi kõrvaldamine

Eristatakse järgmisi meetodeid:

  • staatilise koodi analüüs. Selles faasis otsib skanneriprogramm lähtetekstist jadasid, mis vastavad ebaturvalistele funktsioonikutstele jne. Tegelikult skannitakse programmi lähteteksti spetsiaalse reeglibaasi alusel, mis sisaldab ebaturvaliste koodinäidiste kirjeldust.
  • udune. See on juhuslike või ebaõigete andmete sisestamine programmi sisendisse ja programmi vastuse analüüsimine.
  • Pöördprojekteerimine. See juhtum juhtub siis, kui sõltumatud teadlased otsivad programmi haavatavusi ja dokumenteerimata funktsioone.

Kirjandus

  • Steve Maguire, "Usaldusväärse koodi loomine" (Steve Maguire. Tahke koodi kirjutamine. Microsoft Press, 1993)
  • Steve McConnell, "Täiuslik kood" (Steve McConnel. Kood on valmis. Microsoft Press, 1993)

Vaata ka

Lingid

  • AMD64 silumine masinakoodi tasemel, kasutades dbx silurit (vene keel)

Wikimedia sihtasutus. 2010. aasta.

Vaadake, mis on "Programmi silumine" teistes sõnaraamatutes:

    Arvutiprogrammi arendamise etapp, mille käigus tuvastatakse, lokaliseeritakse ja kõrvaldatakse programmis ilmnevad vead. Tavaliselt tehakse silumine teadaolevate tulemustega testjuhtumitel. Inglise keeles: programmide silumine…… Finantssõnastik

    programmide silumine- programmijuhtimine programmijuhtimine programmijuhtimine - [L.G. Sumenko. Inglise-vene infotehnoloogia sõnaraamat. M.: Riigiettevõte TsNIIS, 2003.] Teemad infotehnoloogia üldiselt Sünonüümid programmi kontrollkontroll... ...

    programmide silumine- programmide silumine; Silumine Programmi vigade tuvastamise ja parandamise protsess, samuti selle õige toimimise fakti tuvastamine masinas...

    silumine (programmid)- - [A.S. Goldberg. Inglise-vene energiasõnastik. 2006] Energeetika üldised teemad EN silumine ... Tehniline tõlkija juhend

    Arvutil arvutiprogrammi vigade tuvastamine ja parandamine masina enda abil. See viiakse läbi kahes etapis: 1) osakonna autonoomne kontroll. programmi valdkonnad; 2) igakülgne kontrollimine, lahendades mitu siluvat programmi. näited, tulemused... Suur entsüklopeediline polütehniline sõnaraamat

    silumine- programmid; Silumine Programmi vigade tuvastamise ja parandamise protsess, samuti selle õige toimimise fakti tuvastamine masinas... Polütehniline terminoloogiline seletav sõnastik

    masinaprogrammi silumine- - [A.S. Goldberg. Inglise-vene energiasõnastik. 2006] Energeetika teemad üldiselt EN koodi täpsustamine ... Tehniline tõlkija juhend

    SILUMINE- (1) programm, süstemaatiline otsimis- ja eemaldamisprotsess (vt) in (vt), mis viiakse läbi selle arvutis töötamise tulemuste põhjal või spetsiaalse abiprogrammi (siluja) abil, pakkudes selle jaoks etteantud režiimi. silumine ja väljastamine ...... Suur polütehniline entsüklopeedia

    Silumine on arvutiprogrammide arendamise etapp, kus vead tuvastatakse, lokaliseeritakse ja kõrvaldatakse. Et mõista, kus viga tekkis, peate: välja selgitama muutujate praegused väärtused; ja saate teada, millisel teel programm käivitati..... ... Wikipedia

Raamatud

  • Android kasutajale. Kasulikud programmid ja näpunäited, Deniss Nikolajevitš Kolisnitšenko, Arvestatakse kodukasutajate seas kõige huvitavamaid, kasulikumaid ja populaarsemaid Androidi rakendusi. Jagatakse näpunäiteid, kuidas muuta oma Android-seade kaugjuhtimispuldiks... Kategooria: Operatsioonisüsteemid Väljaandja:

Teine programmeerimissüsteemi moodul, mille funktsioonid on programmi täitmisega tihedalt seotud, on silur.

Siluja on tarkvaramoodul, mis võimaldab täita põhiülesandeid, mis on seotud tekkiva rakendusprogrammi täitmisprotsessi jälgimisega. Seda protsessi nimetatakse silumiseks ja see sisaldab järgmisi põhifunktsioone:

    saadud programmi järjestikune samm-sammuline täitmine masinakäskude või sisestuskeele operaatorite sammude alusel;

    saadud programmi täitmine, kuni see jõuab ühte määratud katkestuspunktidest (murdepunktidest);

    saadud programmi täitmine kuni selle programmi poolt töödeldavate andmete ja aadressidega seotud teatud täpsustatud tingimuste ilmnemiseni;

    saadud programmi käskude või andmetega hõivatud mälualade sisu vaatamine.

Algselt olid silurid eraldi tarkvaramoodulid, mis suutsid saadud programmi masinakäsu keele osas töödelda. Nende võimalused piirdusid peamiselt tekkivate programmide täitmise modelleerimisega vastava arvutisüsteemi arhitektuuris. Täitmine võib toimuda pidevalt või astmeliselt.

Silurite edasiarendamine on seotud järgmiste põhipunktidega:

Integreeritud arenduskeskkondade tekkimine;

Silumistööriistade riistvaratoe tekkimine paljudes arvutisüsteemides.

Esimene neist sammudest võimaldas programmiarendajatel töötada mitte masinajuhiste, vaid lähteprogrammeerimiskeele järgi, mis vähendas oluliselt silumiskoormust.

tarkvara. Samal ajal lakkasid silujad olemast eraldiseisvad moodulid ja neist sai programmeerimissüsteemide lahutamatu osa, kuna nüüd pidid nad toetama identifikaatoritabelitega töötamist ja täitma keele leksikaalsete üksuste tuvastamise pöördülesannet. Selle põhjuseks on asjaolu, et sellises keskkonnas toimub programmide silumine kasutaja antud nimede, mitte kompilaatori poolt määratud sisenimede järgi. Vastavad muudatused olid vajalikud ka kompilaatorite ja linkerite funktsioonides, kuna need pidid sisaldama objektile ja käivitatavatele failidele nimede tabelit, et silur saaks seda töödelda.

Teine samm võimaldas oluliselt laiendada silumiskeskkondade võimalusi.Nüüd ei nõudnud need arvuti ja vastava arvutisüsteemi arhitektuuri modelleerimist.Saadud programmi täitmine silumisrežiimis sai võimalikuks samas keskkonnas, mis tavarežiimis. Siluri ülesandeks oli arvutisüsteemi tõlkimine vastavateks ja cnp pi h neid enne tulemuseks oleva silumisprogrammi käivitamist.arvutusprotsessori lipud

Silujad kaasaegsetes programmeerimissüsteemides on arendatud liidesega moodulid, higi, y.i.-i.. mis töötavad otse tekstiga ja m-one programmi moodulid. Paljud nende funktsioonid on integreeritud LF-i funktsioonidega< ют... редакторов исходных текстов, входящих в сое urn in. .«mi программирования.

Vaatleme süsteemi siluri npoi rammprop.mm võimalusi. Delfi. See on integreeritud arenduskeskkonda sisse ehitatud võimas silur. Toetatud komplekt – im .\, P\ """

sisaldab kõike, mida võiksite silurilt oodata: jälgimist ja higistamist. Ja

täitmine, katkestuspunktide määramine, lisamine ja umbes, m...,. kontrollitud väärtused, kuupäevade arvutamine ja muutmine I-> > .-virna sisu vaatamine.

Punktidpeatus (murdepunktid) või lihtsalt ociaiumi.i, higi..,.,..-kui teatud tingimused on täidetud siis peatame. p,.i.,. t , programmid. Kõige sagedamini asetatakse katkestuspunktid koodi onpi d.p.pi-reale ja katkestus toimub samal ajal, efektiivsus, d.mt. , peaks rida täitma hakkama. Sellise peatuse saab teha kl< ми,.п..., например, щелкнув слева от строки кода. Если ш-ш.- ..м.» < проанализировать поведение программы внутри опред.-тч...,.,

protseduuride või funktsioonide jaoks piisab lihtsalt 1 punkti o(mi

oh esimene rida.

Tingimuslik punkt peatus. Saate määrata täiendavaid< поим. >stop-nupp ja siis programm peatub -..m jõudes teatud koodireale ainult käivitamisel

KaasaegneHumanitaarabiÜlikool

Kaasaegnefyw

u"mpiin. Sellise katkestuspunkti tüüpiline kasutusjuhtum oleks koodi murdmine tsükli sees. Tõenäoliselt ei taha te programmi peatada ja minikäivitada iga kord, kui tsükkel jookseb – seda juhtub sadu, võib-olla tuhandeid kordi. Selle asemel, et programmi pidevalt uuesti käivitada, saate määrata moshnovi punkti, kui muutuja jõuab teatud väärtuseni.

Punkt peatus Kõrval ravi To andmeid. Seda tüüpi katkestuspunkt peatab programmi täitmise, kui konkreetset mälukohta muudetakse. Seda kasutatakse madala taseme o| muutujatele väärtuste määramisel vigade jälgimisel tülikas. Samuti saate sisestada kontrollitava mäluala algusaadressi ja selle suuruse (baitides) Vajaliku suuruse määramisega saate juhtida mis tahes tüüpi muutujat: char (1 bait) ja Integer (4 baiti) suvalise suurusega massiivile või kirjele.Nagu tingimusliku katkestuspunkti puhul, saate sisestada avaldise, mis on mäluala muutmisel katkestuskriteerium.See võimaldab tuvastada vigu, mis ilmnevad alles pärast n-ndat väärtuse värskendamist muutuja.

Punkt peatus Kõrval aadress. Aadressil peatumine rakendatakse siis, kui täidetakse antud aadressil mälus asuv käsk. Need punktid on tavaliselt seatud-; kui konkreetsele koodireale ei ole võimalik määrata tavalist katkestuspunkti vastava mooduli lähtekoodi puudumise tõttu. Nagu ka muud tüüpi katkestuspunktide puhul, saate määrata programmi täitmise peatamise tingimused.

Punkt peatus Kõrval laadimine moodul, nagu nimigi ütleb, peatab määratud mooduli laadimisel siluva programmi täitmise.

Rühmad punktid peatus on integreeritud siluri üks võimsamaid ja tõhusamaid funktsioone. Rühmamehhanismi abil saab mis tahes katkestuspunkti aktiveerida või deaktiveerida mõne muu katkestuspunktiga, mis võimaldab luua murdepunktide rühmade toimimiseks väga keerulisi algoritme, mis on loodud kõige tabamatumate ja spetsiifilisemate vigade tuvastamiseks.

Samm sammu haavalesitusprogrammid. Programmi saab käivitada järjestikku, rida-realt, kasutades käske Step Over või Trace Into (vaikeklahvid Ja vastavalt). Käsk Trace Into võimaldab programmi käivitamisel siseneda väljakutsutud protseduuridesse ja funktsioonidesse ning käsk Step Over täidab need kohe ja esitab need ühe toiminguna. Neid valikuid on mugav kasutada pärast programmi mõnel hetkel selle tekstis peatamist.

Samuti saate käsku Käivita kursorile (klahv ). See funktsioon on mugav

Kasutage mitmekordse tsükli vahelejätmiseks, et te ei vajutaks pidevalt klahve Ja .

Kasutamineakeninspektorandmeid (Vaata). Vaateakent saab kasutada muutujate väärtuste jälgimiseks programmi töötamise ajal. Programm peab olema programmikoodi vaatamise režiimis (s.t. mis tahes katkestuspunkte täidetakse) – ainult sel juhul on Watch akna sisu õige. Selles aknas saate sisestada mõne Object Pascal avaldise või määrata programmis määratletud nime.

Inspektoridsilumine (Silumineinspektor) on andmeinspektori akna tüüp. Need on võimsamad ja hõlpsamini kasutatavad kui kella aken. Silumisinspektoris saate vaadata paljudest üksikutest elementidest (nt klassidest ja kirjetest) koosnevate andmete sisu.

KasutaminemeeskonnadHindaJaMuutma. Käsud Hinda ja Muuda võimaldavad teil vastavalt vaadata ja muuta muutujate, sealhulgas massiivide ja kirjete sisu, kui rakendus töötab integreeritud siluris. (Kuid need ei anna juurdepääsu funktsioonidele ja muutujatele, mis jäävad reguleerimisalast välja.)

JuurdepääsTovirnakõned (HelistamaVirna) võimaldab vaadata funktsioonide ja protseduuride väljakutseid koos neile edastatud parameetritega nende täitmise järjestuses kuni programmi täitmise teatud punktini.

Vaadeojad (NiitOlek). Kui teie rakendus kasutab mitut lõime, võib sisseehitatud silur anda teavet nende kõigi kohta.

Ajakirisündmused (SündmusLogi sisse) - See on koht, kus silur kirjutab teavet erinevate sündmuste kohta. Sündmuste tüübid, mida saab logida, hõlmavad protsessi käivitamist ja lõpetamist ning mooduli laadimist siluri poolt.

AkenProtsessor sisaldab viit teabepaneeli: CPU, Memory Dump, Register, Flags ja Stack. Selle abiga saab arendaja võimaluse uurida, mis autos täpselt toimub. Iga paneel võimaldab teil silumise ajal jälgida protsessori töö olulisi aspekte.

Protsessori paneel kuvab hetkel käivitatava lahtivõetud koodi opkoode ja märguandeid. Saate vaadata rakenduse koodi mis tahes aadressil ja valida praeguseks täitmiseks juhuslikult uue käsu. See võimaldab teil uurida programmi koostekoodi käitumist. Kogenud arendajad teavad hästi, et loodud koostekoodi kontrollimisel leitakse ja kõrvaldatakse palju vigu.

Protsessori akna kontekstimenüü võimaldab kohandada akna välimust, vaadata erinevaid aadresse, minna käsule, mida käivitatakse

KaasaegneHumanitaarabiÜlikool! 16

KaasaegneHumanitaarabiÜlikool

mimi- w . "Javiineidituni, niiit- lu-" pnyii. csiToll|) OCMOTpyORIGINAAL

kood ja i ik ir n- i m" * i-* i h.if h mi. m m 11"m.i voog, milles toimub

avamine 11 teda.111." ".i iiih|m ,| iM.iimi i I'll

On naiifiiii Msmnnu i Himp mii + ihi vaadata mis tahes ala sisu meie poolt i i;p<м мдср + пммп мм-нч (н.пьпредставлено по-разному: как Byle, Woid, nwnHD. uwnni). :>inul<>, kahekordne või pikendatud. Saate otsida ja ii.immiii mi 1ed (tonni baitide jada, modifitseeritud, unushchio d.tpio ja liikuda järgmiste juurde või järjestikku lipo iyush.muya praegused andmed kursorina.

Kaustade Honji.loi ja I lags eesmärk on ilmne: need kuvavad ja neid saab muuta protsessori viivituste kohta.

Pinnapaneelil saate vaadata rakenduse poolt mäluna kasutatavat mälu. Samuti saate muuta väärtusi ja navigeerida aadressidele.

Siluja(inglise siluja) - programm, mis on loodud teise programmi käitumise analüüsimiseks, pakkudes selle jälgimist (programmi poolt täidetavate käskude jälgimine ja printimine, muutujate või muude programmi täitmisega seotud sündmuste andmete muutmine), peatudes määratud ajal punktid või määratud tingimuste täitmisel mälurakkude, protsessori registrite ja programmikäskude vaatamine ja muutmine.

Sümboolsed silujad Töötage pigem lähtekoodi sümbolitega (muutujate ja protseduuride nimed), mitte absoluutsete masinaaadressidega. Sümboolne silur nõuab kompilaatori ja linkeri vahelist suhtlust, et luua sümboleid ja nende aadresse seostavaid tabeleid.

Kaasaegsed silurid on äärmiselt võimsad ja paindlikud. Siiski ei tasu nendega liialdada seal, kus on vaja mõelda. Sageli ei aita mitmepäevane jälgimine vea leidmiseks vähem vaeva, kui lihtsalt teisele programmeerijale protseduuri selgitamine.

Mõnda probleemi on raske lahendada isegi siluriga. Näiteks dünaamilisi andmestruktuure (loendeid ja puid) ei saa uurida tervikuna; selle asemel peate iga ühenduse käsitsi läbima. On tõsisemaid probleeme, nagu mälu ülekirjutamine, mis on põhjustatud tõrketest, mis asuvad nende ilmumiskohast kaugel. Sellistes olukordades pole silujatest, mis keskenduvad selliste sümptomite tuvastamisele nagu "nulliga jagamine protseduuris p1", vähe kasu.

Lõpetuseks, mõnda süsteemi ei saa sellisena "siluda": te ei saa suvaliselt patsiendile olukorda tekitada, et ainult südamemonitori tarkvara siluda; Te ei saa saata rühma programmeerijaid kosmoselennule, et lennujuhtimisprogrammi siluda. Selliseid süsteeme tuleb kontrollida sisend- ja väljundandmete simuleerimiseks spetsiaalse riist- ja tarkvara abil; Sellistel juhtudel ei testita ega silu tarkvara kunagi reaalsetes tingimustes! Usaldusväärsuskriitilised tarkvarasüsteemid stimuleerivad keelekonstruktsioonide uurimist, mis suurendavad programmide töökindlust ja aitavad kaasa ametlikele kontrollimeetoditele.

Siluri põhifunktsioonid

Jälgimine(Inglise) jälg). Programmi samm-sammult täitmine, mis võimaldab programmeerijal käske täpselt jälgida nende täitmise järjekorras.

Kontrollpunktid(Inglise) murdepunkt). Tööriist, mis on loodud programmi sundimiseks täitma programmi konkreetsele reale. Spetsiaalne kontrollpunkti tüüp - vaatluspunkt- käivitab programmi seni, kuni pääsete juurde konkreetsele mäluelemendile.