Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  

AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Depanarea programelor si tratarea erorilor

fox pro

+ Font mai mare | - Font mai mic




Depanarea programelor si tratarea erorilor

In scrierea unui program , deseori apar erori datorate fie neatentiei, fie nunei cunoasteri insuficientente a limbazului de programare, fie neluariin seama a unor cazuri particulare ale evolutiei programului.




Doua mari clase de erori pot aparea la executia a unui program:

-erori de sintacsa, cand programul este incorect scris, ducand fie la intreruperea rularii, fie la executarea unor rutine pentru tratarea erorilor.

-erori de rulare, cand programul este corect scris, dar el nu functioneaza cum dorim, rezultatele obtinute nefiind cele asteptate de noi.

Primul tip de erori sunt mai usori de detectata si de corectata, pe cand cele din cea de-a doua grupa necesita, de obicei, mai mult pentru detectare si mai multa munca pentru corectare.

La rularea unui program, aparaitia uei erori de sintaxa determina, de obicei, intreruperea procesului de executie si afisarea unui mesaj de erore, indicand timpul erori aparaute si cerand utilizatorului luarea unei decizi, astfel:

-intreruperea programului, actionand declansatorul Cancel, care este si cel implicit;

-suspendarea executiei programului, obtinuta prin actionarea declansatorului Suspend;

-continuarea executiei, ignorand eroarea aparuta, prin alegerea declasatorului Ignore.

Detectarea erorilor de rulare presupune tehnici de lucru mai avansate, cum ar fi rularea pas cu pas, folosind punctele de intrerupere, vizualizarea continutului unor variabilein paralel cu executarea programlor, etc.Vom prezentain continuare cateva tehnici folositein depanarea programelor realizate cu ajutorul adoua ferestre sistem ale FoxPro, fereastra Trace si fereastra Debug, acesibile din submeniul,in partea de jos a acestuia.

Rularea pas cu pas a unui program reprezinta o tehnica speciala folosita la depanarea programelor, constandin exexcutarea unei singure instructiuni a programului la o comanda a utilizatorului.In intervalul de timp dintre executia a doua instructiuni consecutive, programatorul poate observa eventualele functionari incorecte ale programului, detectand astfel cauzele ce au dus la erorile de rulare respective.

Punctele de intrerupere reprezinta pozitii fixein cadrul programului de depanat, la care executia programului respectiv se opreste, utlizatorul avand satefel posibilitatea dea verifica starea de moment a variabilelor din program, modul cum decurge executia programului,in vederea detectari eventualelor surse de eroare.

Aceste doua tehnici prezentate mai sus sunt disponibile prin intermediul ferestrei Trace, care se deschide prin selectareaoptiuni Trace.

Pentru ca un program sa poat fie depanatin fereastra Trace,acesta mai tebuie deschisin acesta fereastra specificanduse programul de depanat. Dupa deschiderea programului se poate trece la executia lui, aceasta putanduse executain mai mute moduri:

-pas cu pas, cate o instructiune la fiecare comanda a utlizatorului;

-pana la un punct de intrerupere care va determina suspendarea programului;

-executarea continua, la viteza maxima;

-executarea continua cu viteza controlata, cand dupa executia fiecarei instructiuni se face o pauza dupa carea se continua rularea

Vom discuta mai rularea pas cu pas a unui program deschis in fereastra Trace. Pentru executia fiecarei instrctiuni a programului, utilizatorul va alege optiunea Over sau Step, acestea determinand executia instructiunii curente, dupa care se asteapta o noua comanda de executare de la utilizator



Diferenta dintre cele doua optiuni este data de modul de tratare a comenzilor de apel al unei rutine:

-Step determina executarea unei instructiuni a programului, iar in cazul cand aceasta este un apel al unei rutine, se va trece in interiorul rutinei, pentru executarea instructiunilor acesteia;

-Over, de asemenea, executa o instructiune, dar cand aceasta este un apel al unei rutine (program, procedura, functie ) aceasta este executata in intregime, intr-un singur pas, fara a se trece la executarea pas cu pas a instrctiunilor respectivei rutine.

Instructiunea curenta care va fi executata prin intermediul optiunilor Step sau Over va aparea pe ecran supraluminata sau evidentiata prin intermediul unui semn, indicand aceasta stare a liniei respective. In combinatie cu instructiunea Step, se foloseste si optiunea bara Out, care determina executarea continua a restului de instructiuni din programul curent, urmand ca dupa revenirea in programul apelant, executia sa fie suspendata pe prima instructiune care urmeaza instructiunii de apel al rutinei. Acesta este echivalenta cu iesirea din rutina curenta si oprirea imediata in rutina apelanta.

O alta modalitate de rulare a uni program este cea prin puncte de intrerupere, adica, programul se va executa in mod continuu pana la primul punc de intrerupere intalnit. Pentru stabilirea punctelor de intrerupere, in care executia programului va fi suspendata, se va deplasa cursorul pe linia respectiva, dupa care se va tasta Space sau Enter. O noua actionare a tastei Space sau Enter, cand cursorul se afla pe o linie care contine un punct de intrerupere, va determina anularea punctului de intrerupere respectiv, linia revenind la starea initiala.

Stergerea, anularea tuturor punctelor de intrerupere se poate face prin alegerea optiunii Clear Breakpoints.

Un punct de intrerupere nu determina terminarea exectiei programului, ci numai suspendarea acestuia, pana la o noua comanda a utilizatorului cu privire la continuarea rularii. Optiunea bara Resume determina continuarea executiei contunue a programului, pana la un nuo punc de intrerupere, pana la sfarsitul programului sau pana la actionarea tastei Escape.

O modalitate speciala de rulare a programului este obtinuta prin rularea optiunii Throttle, constand in executarea continua a programului, instructiune cu instructiune facandu-se o pauza, stabilita de utilizator.

Oprirea executiei programului se poate face in orice moment, selectand optiunea Cancel.

In paralel cu executarea unui program in fereastra Trace, se poate vizualiza continutul unor variabile folosite in program, sau chiar rezultatul evaluarii unor expresii folosind aceste variabile, prin intermediul ferestrei Debug.

Se recomanda ca fereastra Trace si Debug sa fie deschise si vizibile simultan pa ecran,urmarindu-se astfel efectul fiecarei instructiuni executate in fereastra Trace asupra variabilelor din fereastra Debug.

Ferestra Debug este formata din doua parti, astfel: in partea dreapta se introdun variabilele si expresiile care se doresc a fi vizualizate in timpul executarii porgramului, in partea stanga aparand valorile de moment ale variabilelor sau expresiilor respective. De asemenea, in fereastra Debug se pot specifica puncte de intrerupere a programului dependente de valorile variabilelor sau expresiilor din fereastra respectiva, spre deosebire de punctele de intrerupere stabilite in fereastra Trace, care reprezinta puncte fixe ale programului, independente de valorile variabilelor.



Pentru a pozitiona un astfel de punct de intrerupere, in dreptul variabilei sau expresiei dorite, pe bara ce separa cele doua parti ale ferestrei, se va amplasa un marcaj. Acest lucru se va realiya fie cu mouse-ul , poyitionand cursorul acestuia in locu dorit si actionand butonul stang, fie prin intermediul tastaturii, deplasandu-se pa bara separatoare folosind tasta Tab, poyitionindu-se in dreptul variabilei sau expresiei dorite, cu ajutorul sagetilor directionale si actionand tasta Space, pentru marcare. Executia programului se va suspenda ori de cate ori valoarea variabilei sau expresiei corespunyatoare unui astfel de punct de intrerupere se va modifica.

Exemplu: dorim sa calculam suma primelor yece numere naturale, pentru aceasta sciind urmatorul program:

CLEAR

SET TALK OFF

suma= 0

FOR i = 0 TO 10

suma = suma+i

ENDFOR

? Suma primelor yece numere naturale este: , suma

acest program functionaeya corect, in urma executarii lui obtinandu-se pe ecran mesajul:

Suma primelor yece numere naturale este 55

Dar sa presupunem ca la introducerea programului in memoria calculatorului in locul semnului + din instructiunea suma = suma + 1, s-a tastat semnul * .

Suma primelor yece numere naturale este 0

Pentru detectarea erorii vom deschide cele doua ferestre, Trace si Debug simultan pe ecran, dupa care in fereastra Debug, in partea dreapta, vom introduce variabilele de viyualiyat, suma si I, iar in fereastra Trace, care va fi fereastra activa, vom deschide programul de depanat, SUMA.PRG, dupa care se va trece la rularea pas cu pas a programului.

Pentru aceasta se va selecta optiunea bara Step a meniului ferestrei Trace, prin actionarea tastei S cand fereastra respectiva este activa. Actionati de sase ori consecutiv tasta S obsevand in fereastra Debug modificarile celor doua variabile suma si i, dupa fiecare executare a unei instructiuni. Dupa cea de a sasea actionare a testei S , ultima instructiune executata a fost sums = suma + i , care trebuie sa aiba ca reyultat valoarea 1 depusa in variabila sums. In schimb noi vom observa ca suma va avea valoarea 0 dupa executarea acestei comenyi, indictnd ca programul nu functioneaya corect. Se va examina mai atent linia respectiva, detectandu-se astfel eroarea de scriere ( * in loc de + ).

Pentru corectarea erorii se anuleaza executarea programului selectand optiunea Cancel dupa care se reediteaza programul intr-o fereastra de editare.






Politica de confidentialitate



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 771
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2021 . All rights reserved

Distribuie URL

Adauga cod HTML in site