Depanare program

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 7 aprilie 2022; verificările necesită 4 modificări .

Depanarea  este o etapă în dezvoltarea unui program de calculator , în care erorile sunt detectate, localizate și eliminate. Pentru a înțelege unde a apărut eroarea, trebuie să:

Există două tehnologii de depanare complementare:

Locul depanării în ciclul de dezvoltare al unui program

Un ciclu de dezvoltare tipic, repetat de multe ori pe parcursul vieții unui program, arată cam așa:

  1. Programare  - introducerea de noi funcționalități în program, corectarea erorilor existente .
  2. Testare (manuala sau automata; de catre un programator, tester sau utilizator; " fum ", in modul cutie neagra sau modulara ) - detectarea faptului unei erori.
  3. Reproducerea unei erori înseamnă a afla condițiile în care apare o eroare. Aceasta se poate dovedi a fi o sarcină dificilă atunci când programați procese concurente și cu unele erori neobișnuite cunoscute sub numele de heisenbugs .
  4. Depanare  - Găsirea cauzei unei erori.

Instrumente

Depanarea necesită adesea abilități ridicate și resurse semnificative. Capacitatea unui programator de a depana este un factor important în găsirea sursei unei probleme, dar dificultatea depanării depinde în mare măsură de limbajul de programare și de instrumentele utilizate, în special de depanare .

Instrumente de depanare

Un depanator este un instrument software care permite programatorului să observe execuția programului investigat, să-l oprească și să-l repornească, să-l ruleze cu încetinitorul, să modifice valorile în memorie și chiar, în unele cazuri, să se întoarcă în timp.

De asemenea, instrumentele utile în mâinile unui programator pot fi:

Utilizarea limbajelor de programare de nivel înalt facilitează de obicei depanarea dacă astfel de limbaje conțin, de exemplu, facilități de gestionare a excepțiilor care facilitează găsirea sursei problemei. În limbile de nivel scăzut, erorile pot duce la probleme subtile, cum ar fi coruperea memoriei și scurgerile de memorie . Atunci poate fi destul de dificil să se determine care a fost cauza inițială a erorii. În aceste cazuri, pot fi necesare tehnici complexe și instrumente de depanare.

„Alegerea noastră personală este să încercăm să nu folosim dispozitive de depanare, decât să vedem stiva de apeluri sau valorile câtorva variabile . Un motiv pentru aceasta este că este foarte ușor să te pierzi în detaliile structurilor complexe de date și ale căilor de execuție a programelor. Găsim că trecerea printr-un program este mai puțin productivă decât gândirea grea și verificarea codului în punctele critice.

A face clic pe operatori durează mai mult decât vizualizarea mesajelor operatorilor pentru emiterea de informații de depanare, plasate în punctele critice. Este mai rapid să decideți unde să puneți o instrucțiune de depanare decât să treceți prin secțiuni critice de cod, chiar și presupunând că știm unde sunt acele secțiuni. Mai important, instrucțiunile de depanare sunt păstrate în program, iar sesiunile de depanare sunt tranzitorii.

Rătăcirea orb în depanator este cel mai probabil neproductivă. Este mai util să folosiți un depanator pentru a afla starea programului în care face o greșeală, apoi gândiți-vă cum ar putea apărea o astfel de stare. Depanatoarele pot fi programe complexe și confuze, în special pentru începători, pentru care vor fi mai degrabă perplexi decât folositori ... "

„Depanarea este grea și poate dura o perioadă de timp imprevizibil, așa că scopul este de a ocoli cea mai mare parte. Tehnicile care pot ajuta la reducerea timpului de depanare includ un design bun, un stil bun , verificarea condițiilor la limită, validarea afirmațiilor inițiale și caracterul rezonabil al codului, programarea defensivă , interfețe bine proiectate, utilizarea limitată a variabilelor globale, controale și verificări automate. Un gram de prevenire merită o tonă de vindecare.”

Brian Kernighan și Rob Pike

Instrumente care reduc nevoia de depanare

O altă direcție este de a face depanarea cât mai rar posibil. Pentru aceasta aplica:

Securitatea codului și depanarea

În codul programului poate exista așa-numitul comportament nedocumentat  - erori grave care nu apar în cursul normal al execuției programului, dar sunt foarte periculoase pentru securitatea întregului sistem în cazul unui atac țintit. Cel mai adesea, acesta este rezultatul erorilor programatorului. Cele mai cunoscute exemple sunt injectarea SQL și depășirea bufferului . În acest caz, sarcina de depanare este:

Există astfel de metode:

Vezi și

Note

Literatură

Link -uri