Cuprins:
- Ce este un program de depanare?
- Configurarea programului pentru a utiliza programul de depanare
- Oprirea la un punct de întrerupere
- Reluarea executării unui program
- Examinarea variabilelor
- Continuarea unui program oprit
Video: Filme de actiune 2016 - filme noi 2016 hd subtitrate in romana2017 2024
Învățarea de a utiliza depanatorul este unul dintre cele mai importante lucruri pe care le puteți face pentru a vă dezvolta jocul C ++. Ce urmează sunt pașii necesari pentru a stabili un punct de întrerupere, opriți programul, examinați câteva variabile și reluați programul.
Începând cu primăvara anului 2014, Codul:: Blocurile nu se integrează cu aplicația de depanare pentru Mac, deci dacă sunteți un utilizator Mac, aceste exemple ar putea să nu funcționeze pentru dvs.
Ce este un program de depanare?
Înainte de a merge mai departe, vă poate ajuta dacă înțelegeți ce este un program de depanare. Un debugger este un program separat care vă permite să vă controlați programul de execuție. În mod specific, vă permite să opriți executarea programului pe anumite linii de cod, să examinați valoarea variabilelor, să modificați valoarea variabilelor și să reluați execuția programului.
Debuggerul GNU are o interfață de linie de comandă care este atât de greu de memorat și greu de utilizat (o combinație câștigătoare dacă ați auzit vreodată). Din fericire, Cod:: Blocuri oferă o interfață grafică aproape fără întrerupere a depanatorului GNU. În timp ce faceți clic pe ferestrele editorului și activați meniurile drop-down, Cod:: Blocuri trimite comenzi criptice la depanator în fundal și apoi interpretează și afișează grafic rezultatele. Nu este grozav atunci când două programe chit-chat în fundal pentru a vă salva de lucru?
Cea mai bună modalitate de a afla despre depanator este să urmați doar aceste exemple.
Configurarea programului pentru a utiliza programul de depanare
Aveți nevoie să construiți programul folosind setări speciale de compilatoare dacă intenționați să-l executați sub controlul depanatorului. Cel mai simplu mod de a face acest lucru este chiar la început, când creați pentru prima dată proiectul. După ce ați specificat că doriți să creați o aplicație Consola și să furnizați numele programului, Cod:: Blocuri vă va întreba dacă doriți să vă construiți programul în configurație Debug, Release configuration sau ambele, după cum se arată în Figura 1 Asigurați-vă că configurarea Debug este activată.
Un program în configurația Debug include o mulțime de informații suplimentare pe care debuggerul are nevoie pentru a-și face magia. Această informație include
-
Adresa fiecărui rând al codului sursă C ++
-
Adresa fiecărei variabile
-
Numele și structura fiecărei clase în programul dvs.
Toate aceste informații debugger adaugă mult programul executabil - sute de kilobyte sau mai mult. Acest spațiu este total inutil dacă nu intenționați să rulați programul sub controlul depanatorului, astfel încât Cod:: Blocurile vă oferă opțiunea de a construi executabile fără această informație în ceea ce este cunoscut sub numele de Configurație de lansare.Programele de lansare sunt mai mici, se încarcă mai repede și chiar se execută mai repede.
Dacă activați configurațiile Debug și Release în proiectul dvs., atunci veți alege să construiți în timp ce tip de executabil pe care încercați să-l construiți.
Există două diferențe între configurațiile Debug și Release:
-
Configurația Debug include opțiunea de compilatoare -g .
Această opțiune indică compilatorului să includă informații despre simbol în executabilul final. Acestea sunt lucrurile menționate mai sus - adresa fiecărei linii de cod și a fiecărei variabile, precum și o descriere a fiecărei clase utilizate în programul dvs.
-
Optimizatorul de coduri este dezactivat în configurația Debug și este pornit în configurația Release.
Optimizatorul de cod GNU generează programe care se execută mai repede, dar se face prin mutarea instrucțiunilor în moduri care pot fi destul de confuze atunci când depanați programul. Configurația de lansare nu include comutatorul -g și permite un anumit nivel de optimizare prin includerea comutatorului -O .
Asigurați-vă că construiți în prezent lansarea Debug selectând Build → Select Target → Debug, așa cum se arată în Figura 2.
Figura 2: Trebuie să vă asigurați că construiți executabilul debuggable, chiar dacă ați activat Configurarea de depanare când ați creat proiectul.Refaceți programul selectând Build → Rebuild.
Oprirea la un punct de întrerupere
Pentru a seta un punct de întrerupere, faceți clic pur și simplu în zona de lângă dreapta numărului de linie - această zonă este cunoscută în Cod:: Blochează parlamentul ca fiind . Nu numai că linia apare într-o altă culoare, indicând faptul că editorul a selectat-o, dar un mic semn de oprire apare în jgheab, așa cum se arată în Figura 3. Acesta este un indiciu că un punct de întrerupere a fost setat la linia 11.
Figura 3: Cod:: Blocurile utilizează un semn de stop drăguț pentru a indica când este setat un punct de întrerupere.Puteți seta câte puncte de întrerupere pe care le doriți la un moment dat, dar acest punct de întrerupere va fi bine pentru acest exemplu.
Aici puteți porni programul utilizând opțiunea Debug → Start / Continue din figura 4.
Figura 4: Execuția (sau reluarea) executării programului folosind opțiunea de meniu Debug-> Start / Continue.Programul începe executarea ca normal, dar se oprește aproape imediat, cu o săgeată galbenă mică îndreptată spre Linia 11 așa cum se arată în Figura 5. În plus, apare o fereastră goală care ar conține în mod normal o ieșire program. Nimic nu apare în ieșirea programului, deoarece linia 11 nu a fost încă executată.
Figura 5: Execuția programului se oprește de îndată ce programul întâlnește un punct de întrerupere.Wow! Asta e tare.
Reluarea executării unui program
Aveți posibilitatea să setați un breakpoint pe următoarea linie și să selectați Debug → Start / Continue pentru a continua executarea programului la următoarea linie dacă doriți; cu toate acestea, deoarece acesta este un lucru obișnuit de făcut, Cod:: Blocks oferă opțiunea Debug → Next Line, ceea ce înseamnă "Executați programul la următoarea linie."
Acest lucru face ca programul să clipească instantaneu, deoarece comanda trece la program suficient de lungă pentru a executa linia 11 înainte de a opri din nou, așa cum se arată în figura 6.
Figura 6: Executarea comenzii liniei următoare depanatorul pentru a executa o linie în program.Puteți repeta acest proces ori de câte ori doriți, într-un mod eficient și simplu, prin intermediul programului.
Atunci când ajungeți la un apel pentru funcții, linia următoare rămâne în funcția curentă, executând întreaga funcție ca și cum ar fi o singură linie (care este la acest nivel). Dacă doriți să treceți controlul la apelul funcției, selectați Debug → Step Into. Aceasta funcționează numai pentru funcțiile pentru care aveți codul sursă - aceasta nu funcționează foarte bine pentru funcțiile bibliotecii C ++.
De fiecare dată când te-ai săturat să faci un singur pas, poți să anulați programul selectând Debug → Stop Debugger. Nu numai că acest lucru se oprește debugger, dar se oprește programul dvs., de asemenea.
Examinarea variabilelor
O singură trecere prin programul dvs. este o modalitate excelentă de a vă simți unde se desfășoară programul dvs., dar poate fi dificil să înțelegeți de ce, dacă nu puteți examina variabilele pe care le utilizează pentru a lua decizii. De exemplu, când parcurgeți singur programul de exemplu, este posibil să observați că controlul nu intră deloc în buclele pentru . De ce este asta?
Opriți programul selectând Debug → Stop Debugger sau apăsând Shift + F8 și reporniți selectând Debug → Start / Continue sau apăsând F8. În mod unic, selectați Debug → Următorul rând sau apăsând F7 până când execuția ajunge la începutul buclă pentru .
De această dată, asigurați-vă că fereastra Watch este vizibilă selectând Debug → Windows Debugging → Ceasuri. O fereastră ca cea din Figura 7 apare afișând valorile argumentelor și ale oricăror variabile locale. Observați că nNumberofArgs este 1, doar numele programului în sine. Deoarece încep cu o valoare de 1, bucla nu va fi niciodată executată. Adăugați variabilele de ceas pszArgs [0] și pszArgs [1] pentru a vedea ce conțin: numele programului și numele null. Aha! Programul nu are argumente pentru a repeta.
Figura 7: Fereastra de vizionare permite programatorului să vizualizeze valoarea variabilelor.Puteți modifica argumentele în program selectând Project (Proiect) → Set Arguments (Programe). În această fereastră, puteți pune orice argumente doriți.
Observați că fereastra Watch arată numele variabilei, tipul acesteia și valoarea acesteia. Nu puteți schimba tipul, dar puteți să-i modificați valoarea din această fereastră, dacă doriți. Schimbarea valorii nNumberofArgs nu este foarte utilă, dar schimbarea uneori a valorii unei variabile îmi permite să forțez execuția pe o altă cale doar pentru a vedea ce s-ar putea întâmpla.
Continuarea unui program oprit
Un truc pe care trebuie să-l amintiți este că uneori poate deveni confuz în ceea ce privește motivul pentru care programul este oprit. Nu toate programele care sunt oprite sunt sub controlul depanatorului. Uneori așteaptă o intrare de la utilizator.
Pentru a vedea acest efect, programul PrintArgs cu un singur pas până când controlul ajunge la linia 26.Când selectați Linia următoare, cursorul dispare așa cum se arată în figura 8. Gone este săgeata galbenă plăcută care vă amintește de locul în care vă aflați în program. Ce s-a întâmplat?
Figura 8: Controlul pare să dispară atunci când programul așteaptă introducerea de către utilizator.Ce sa întâmplat este că programul mă așteaptă să apăs pe tasta Enter. În primul rând, trebuie să selectați fereastra programului. Apoi puteți apăsa pe Enter (poate fi necesar să faceți acest lucru de mai multe ori). După ce ați făcut acest lucru, nimic nu pare să se întâmple în fereastra programului deoarece controlul a trecut acum înapoi la depanator în fereastra Cod:: Blocuri. Când selectați din nou această fereastră, veți vedea săgeata galbenă care vă spune că Cod:: Blocurile sunt din nou în control.
Când executați programul în cadrul aplicației de depanare și controlul pare să dispară, programul poate așteaptă intrarea de la tastatură. Treceți la fereastra programului pentru a vedea dacă este cazul. Dacă da, imediat ce introduceți ceva, controlul va reveni la depanator.