Scrigroup - Documente si articole

     

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


Editorul/Debugger-ul MATLAB

Matlab



+ Font mai mare | - Font mai mic



Editorul/Debugger-ul MATLAB

MATLAB-ul dispune de un editor propriu, editor care este asociat si cu un program de depanare (debugger). Editorul/debugger-ul ofera posibilitatea de a efectua operatiunile de editare de baza precum si accesul la instrumente de depanare a fisierelor .m .

Pachetul Editor/Debugger ofera si o interfata grafica usor de utilizat. Pentru lansarea editorului se tasteaza la prompterul MATLAB comanda edit. Se pot folosi si butoanele/meniurile accesibile din fereastra de comanda.






Setarea implicita a Editorului

Facilitatile de editare si depanare sunt setate sa fie active in mod implicit atunci cand MATLAB-ul este instalat.

Daca se doreste instalarea altui editor sau nu se doreste apelarea la depanarea in regim grafic se pot dezactiva aceste facilitati prin setarea corespunzatoare. De exemplu (in UNIX) se modifica ~home/.Xdefaults file:

matlab*builtInEditor: Off

matlab*graphicalDebugger: Off

Trebuie rulat

xrdb -merge ~home/.Xdefaults

inainte de pornirea MATLAB-ului.

Debugger-ul MATLAB. Exemple de depanare a fisierelor MATLAB

Debugger-ul permite identificarea erorilor de programare. Prin folosirea debugger-ului se poate vizualiza continutul workspace-ului in orice moment in timpul executiei unei functii si se poate executa programul (codul) MATLAB linie cu linie.

Pentru folosirea acestui instrument de depanare se poate utiliza interfata grafica a debugger-ului sau se pot folosi linii de comanda.

Depanarea permite corectarea a doua tipuri de erori:

Erori de sintaxa, cum ar fi scrierea incorecta a numelui unei functii sau omiterea unor paranteze. MATLAB-ul detecteaza majoritatea acestor erori si afiseaza un mesaj de eroare care descrie natura erorii si numarul liniei din programul .m in care a aparut eroarea respectiva.

Erori de rulare (de calcul), care sunt mai mult de natura algoritmica. De exemplu este posibil sa modificam o alta variabila decat trebuie sau sa efectuam un calcul incorect. Aceste erori sunt observate atunci cand fisierul rulat furnizeaza rezultate necorespunzatoare.

In timp ce erorile de sintaxa se corecteaza realtiv usor pe baza mesajelor de eroare, erorile de rulare sunt mai greu de depanat. Se pot utiliza in acest caz mai multe tehnici de depanare:

Se indeparteaza delimitatorii de tip punct si virgula de la sfarsitul liniilor program. Astfel la rularea programului vor fi afisate si rezultatele intermediare corespunzatoare fiecarei linii.

Se adauga comanda keyboard in fisierele .m care sunt depanate. Aceasta comanda opreste executia programului respectiv, da controlul la tastatura si da posibilitatea examinarii si schimbarii unor functii sau variabile. Acest mod de lucru este indicat printr-un prompter special: 'K>>.' Pentru a continua executia, se tasteaza return si se apasa apoi tasta Return.

Se foloseste Debugger-ul MATLAB.

Debugger-ul este util deoarece permite accesul la functiile din workspace, examinarea si eventual modificarea continutului acestora.

Debugger-ul permite setarea sau stergerea unor puncte de oprire: breakpoints, care sunt linii speciale in programul MATLAB la intalnirea carora executia se opreste si sunt posibile operatii de schimbare si de executie a liniilor de comanda una cate una.

Exemplu de depanare

Pentru a ilustra procedurile de depanare disponibile (indeosebi pentru cazul erorilor de rulare) vom folosi un exemplu preluat din MATLAB User Guide. Vom scrie un fisier denumit variance.m care este o functie avand ca intrare un vector si ca iesire un scalar. Fisierul apeleaza la o alta functie, numita sqsum, care calculeaza o suma medie patratica a vectorului de intrare.

function y = variance(x)

mu = sum(x)/length(x);

tot = sqsum(x,mu);

y = tot/(length(x)-1);

In fisierul sqsum.m se strecoara intentionat o eroare.

function tot = sqsum(x,mu)

tot = 0;

for i = 1:length(mu)

tot = tot + ((x(i)-mu).^2);

end

Pentru verificarea corectitudinii calculelor, folosim functia MATLAB std (calculeaza deviatia standard) care permite efectuarea unui calcul echivalent.

Se introduce mai intai un vector de intrare de test:

v = [1 2 3 4 5];

apoi se utilizeaza functia std:

var1 = std(v).^2

var1 =

2.5000

Incercam functia variance care apeleaza functia sqsum (scrisa eronat):

myvar1 = variance(v)

myvar1 =

1

Raspunsul este gresit. Vom incerca cu debugger-ul sa gasim si sa corectam greseala.

Depanarea cu ajutorul interfetei grafice a Debugger-ului

A. Pentru startarea procedurii de depanare:

Daca fisierul .m (adica variance.m) a fost creat cu editorul MATLAB si suntem in fereastra Editor/Debugger, se continua din acest punct.

Daca fisierul a fost creat cu un editor extern, se starteaza Editor/Debugger-ul si apoi se face click pe butonul Open M-file din toolbar.

Toolbar-ul Editor/Debugger contine o serie butoane descrise in continuare:


Buton

Toolbar

Scop

Descriere

Comanda Echivalenta

Seteaza/

Sterge

Breakpoint

Seteaza sau sterge un breakpoint pe linia pe care este pozitionat cursorul.

Dbstop/

Dbclear

Sterge toate Breakpoint-urile

Sterge toate breakpoint-urile care sunt setate in mod curent.

Dbclear all

Step In

(Pas in)

Executa linia curenta a fisierului .m si daca linia este o apelare la alta functie sare (face un pas) in functia respectiva.

Dbstep in

Single Step

(Un singur pas)

Executa linia curenta a fisierului .m .

Dbstep

Continua

Continua executia fisierului pana la terminare sau pana la alt breakpoint.

Dbcont

Sfarsit depanare

Iesirea din starea de depanare.

dbquit

Prin apasarea butonului din dreapta al mouse-ului in fereastra editorului se poate obtine un meniu cu toate aceste optiuni.

B. Setarea Breakpoint-urilor


Punctele de oprire (breakpoint-uri) determina oprirea executiei fisierului la linia specificata si permit evaluarea si schimbarea variabilelor din workspace inainte de reluarea executiei. Breakpoint-ul este indicat printr-un semn rosu de stop () inainte de linia respectiva.

Pentru exemplul considerat, la inceputul depanarii nu se stie unde ar putea fi eroarea, insa un loc logic de amplasare a unui breakpoint pentru a face verificari este in linia 4 a functiei variance.m:

y = tot/(length(x)-1);


Pentru setarea breakpointului se pozitioneaza cursorul pe linia 4 si se face click pe butonul din toolbar sau se alege Set Breakpoint din meniul Debug.

C. Examinarea variabilelor

Pentru verificarea variabilelor, se executa mai intai functia din fereastra de comanda:

variance(v)

Atunci cand executia programului ajunge la breakpoint, o sageata galbena orizontala () arata urmatoarea linie care va fi executata. Daca sageata galbena este verticala () atunci aceasta indica o pauza la sfarsitul unui script sau a unei functii si permite examinarea variabilelor inainte de reintoarcerea la functia principala.


Acum putem verifica valorile variabilelor mu si tot. Se selecteaza textul care contine variabilele si se face click din butonul drept al mouse-ului dupa care se alege din meniu Evaluate Selection.

In fereastra de comanda va fi afisat atat textul selectat cat si rezultatul:

K>> mu

mu =

3

K>> tot

tot =

4

Din analiza acestor valori se observa ca eroarea se afla in sqsum.

D. Schimbarea contextului spatiului de lucru

Se poate folosi meniul Stack pentru schimbarea contextului spatiului de lucru, adica pentru iesirea din functia variance si vizualizarea continutului workspace-ului, prin selectarea din meniu a optiunii Base Workspace:

Prin utilizarea comenzii whos sau a Browserului Workspace se vor vizualiza variabilele v si myvar1, ca de altfel si celelalte variabile create. Pentru intoarcerea la contextul spatiului de lucru local al functiei variance se selecteaza Variance din meniu.

E. Executarea pas cu pas a programului si continuarea executiei

Se sterge breakpoint-ul din linia 4 din variance.m prin plasarea cursorului pe linie si selectarea optiunii Clear Breakpoint din meniul Debug. Se continua executia programului cu Continue din meniul Debug.

Se deschide sqsum.m si se seteaza un breakpoint la linia 4 pentru verificarea buclei si a calculelor. Se ruleaza din nou variance. Executia se va opri acum la linia 4 din sqsum.



Se poate acum evalua indicele buclei i:

K>> i

i =

1

dupa care prin selectarea optiunii Single Step din meniul Debug se executa linia urmatoare. Se evalueaza variabila tot:

K>> tot

tot =

4

Se selecteaza din nou Single Step:

for i = 1:length(mu)

Se observa ca bucla este iterata numai pana la lungimea lui mu, care este scalar, si nu pana la lungimea lui x, vectorul de intrare (aceasta este de fapt greseala).

O data eroarea gasita se selecteaza Quit Debugging si se termina executia programului. Se sterge breakpoint din sqsum si se pune un breakpoint la linia 4 din variance.m, dupa care rulam din nou:

variance(v)

La oprirea executiei se seteaza valoarea lui tot la valoarea corecta (10):

K>> tot = 10

tot =

10

Selectam Continue Execution si obtinem rezultzatul corect.

F. Terminarea sesiunii de depanare

Se selecteaza Exit Editor/Debugger din meniul File si se termina sesiunea de depanare.

Pentru corectarea definitiva a erorii se foloseste editorul si se ruleaza din nou programul pentru o ultima verificare.

Depanarea din linia de comanda

Folosirea facilitatilor de depanare se poate realiza si direct din linia de comanda, prin intermediul unui set de comenzi. Aceste comenzi sunt prezentate in forma lor generala in tabelul urmator.

Descriere

Sintaxa

Setarea unui breakpoint.

dbstop at line_num in file_name

Stergerea unui breakpoint.

dbclear at line_num in file_name

Stop la atentionare, eroare sau generarea de NaN/Inf.

dstop if warning
error
naninf
infnan

Reluarea executiei.

Dbcont

Listarea apelarii de functii.

Dbstack

Listarea tuturor breakpoint-urilor.

dbstatus file_name

Executarea a una sau mai multe linii.

dbstep nlines

Listarea fisierelor M-file cu liniile numerotate.

dbtype file_name

Schimbarea contextului spatiului de lucru local (down).

dbdown

Schimbarea contextului spatiului de lucru local (up).

dbup

Parasirea modului de depanare.

dbquit

Pentru informatii suplimentare privind utilizarea acestor functii se poate apela la comanda help urmata de numele comenzii respective.

Exemplul de depanare a unui fisier cu erori prezentat anterior poate fi reluat, utilizandu-se in locul interfetei grafice a debugger-ului comenzi corespunzatoare in linia de comanda.




Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1785
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 2024 . All rights reserved