TEHNICI DE DEPANARE PROGRAME (DEBUG)
Scopurile capitolului:
Capitolul isi propune sa revizuiasca si sa consolideze
cunostiintele despre tratarea erorilor. Subiecte abordate:
- modalitati de testare si debug;
- "common sense debugging"
Modalitati de testare si debug
- Facilitati de debug:
- monitorizarea cu ajutorul trigger-ilor;
- rularea cu intreruperi ("BREAK processing").
- Optiunea "Statistics"
- afisarea numarul de cursoare
- lanseaza comenzi catre RDBMS:
ALTER SESSION SET SQL_TRACE TRUE
- permite monitorizarea performantelor
Facilitati de debug
Modul debug
Modul debug permite supravegherea prelucrarilor efectuate
cand o forma este rulata. Sunt afisate mesaje despre executia
trigger-ilor in timpul sesiunii "Runform".
Daca trigger-ul este de tip "V2", SQL*Froms da numele
trigger-ului care s-a activat si numarul pasului curent. Daca
trigger-ul este de tip "V3", numele si locatia trigger-ului sunt
date.
Un exemplu de mesaj de debug pentru un trigger de tip "V3":
Executing ON-VALIDATE-FIELD trigger on field SHIPDATE
Rularea cu intreruperi
O alta posibilitate oferita de debug este "Break
processing". In timpul executiei cu intreruperi executia
aplicatiei este temporar suspendata pentru a da posibilitatea
utilizatorului sa aleaga o optiune de debug.
Mesajele de mai jos sunt afisate cand procedura Break este
executata dintr-o forma rulata in mod debug:
Debug Mode Options
Display Global Variables
Display System Variables
Display Page Zero Fields
Continue with Debug Messages
Continue without Debug Messages
Exit Runform
Cum este activata rularea cu intreruperi
Intreruperea este realizata prin chemarea procedurii
packaged (impachetate) "Break" intr-un trigger. Daca nu este
activata optiunea de debug, "Break" este ignorat.
Optiunea de rulare "Statistics"
Optiunea de rulare "Statistics" afiseaza un mesaj la
incheierea unei sesiuni SQL*Forms (Runform) anuntand numarul
maxim de cursoare simultane care au fost utilizate in timpul
sesiunii.
Setarea optiunii de rulare "Statistics"
- in SQL*Forms (Runform) se foloseste optiunea -S
- in SQL*Forms (Design) se seteaza optiunea "Statistics"
- i n SQLFORMS.CFG se insereaza: SLTATISTICS = ON
In versiunea 3, optiunea de rulare "Statistics" activeaza si
facilitatea SQL Trace pentru sesiunea curenta SQL*Forms.
Invocarea facilitatilor de "trace"
"Trace" deschide un fisier care inregistreaza parcurgerile,
executia si "fetch"-urile din fiecare comanda SQL executata intr-
o sesiune "Runform"/"Sqlforms". "Trace" este utilizat pentru
monitorizarea performantelor, si adaptarea aplicatiilor, cat si
pentru testare si debug.
Posibilitatea de a edita comenzile utilizatorului
- Ce este facilitatea "keystroke"
- capturarea datelor (comenzilor) introduse de la
tastatura intr-un fisier
- utilizarea pentru testarea formelor
- - utilizarea facilitatii "keystroke"
- Capturarea a ceea ce este introdus de la tastatura:
RUNFORM -E echo_file form_name
- Rularea din nou a formei utilizand aceleasi
comenzi date de utilizator ca la pasul 1:
RUNFORM -R echo_file form_name
- fisierul script poate fi editat.
Posibilitatea de editare a comenzilor utilizatorului
Ce este facilitatea "keystroke"?
Facilitatea "keystroke" permite inregistrarea intr-un fisier
text a ceea ce este testat de un operator sau proiectant pentru a
putea fi re-rulat apoi. Aceasta facilitate poate fi utilizata
pentru a testa functionalitatea unei forme sub diferite versiuni
software si tipuri de hardware.
Utilizarea facilitatii "keystroke":
Utilizarea acestei facilitati presupune folosirea unor
optiuni din linia de comanda SQL*Forms si a unui editor text.
Sunt listate in continuare optiunile disponibile la rularea
SQL*Forms (Design) sau SQL*Forms (Run Form):
Optiune Actiune
-e numefisier captureaza intr-un fisier script actiunile
de la tastatura ale unui operator;
-r numefisier utilizeaza fisierul script specificat
pentru a rula o aplicatie. Intrarile de la
tastatura sunt citite din fisierul
specificat;
-i numefisier inregistreaza iesirea unei sesiuni
interactive intr-un fisier specificat.
Afiseaza iesirea si pe ecran;
-w numefisier (cu optiunea -r) inregistreaza intr-un
fisier iesirea unei sesiuni in care s-a
utilizat un script "keystroke" si nu
afiseaza si pe ecran iesirea;
Dupa inregistrarea intrarilor de la tastatura (a comenzilor
si datelor) in timpul unei sesiuni Runform se poate edita
fisierul script pentru a schimba operatiile pe care le va
executa.
Fisierul script "keystroke"
Exemplu de fisier script "keystroke"
----------------------------------------------------------
;Generated by SQL*Forms and DMU key mapping
;
Invoke Menus Operator presses [MENU] key
q Select and selects QUERY.
Next Field Moves to next field (ORDONATE).
% 8 8 Execute Query Enters % 88 and executes query.
Next Field Moves back to
Move Right ORDONATE field and changes 88 to
Move Right 89.
9 Execute Query Executes the query.
Next Field
Next Field Advances to COMMPLAIN field and
B Next Block changes value to B. Goes to ITEM
1 Next Field block and enters a record
1 0 0 8 9 0 Next Field
1 0 Next Field
1 Next Field>
1 0 Accept/Commit Commits record and exits.
Exit
----------------------------------------------------------
Editarea fisierului script
- pentru teste repetate;
- pentru intrari variate.
"Common Sense Debugging" (1)
Sugestii petru debug
"Common Sense Debugging" (2)
"Common Sense Debugging" (3)
- Construiti cazuri reproductibile
- Doar dupa ce ati incercat toate sugestiile de mai sus:
- contactati service-ul (al dvs sau al nostru).