Debugging er et trin i udviklingen af et computerprogram , hvor fejl opdages, lokaliseres og elimineres. For at forstå, hvor fejlen opstod, skal du:
Der er to komplementære fejlfindingsteknologier:
En typisk udviklingscyklus, der gentages mange gange i løbet af et programs levetid, ser nogenlunde sådan ud:
Fejlretning kræver ofte høj dygtighed og betydelige ressourcer. En programmørs evne til at debugge er en vigtig faktor for at finde kilden til et problem, men sværhedsgraden ved fejlretning afhænger i høj grad af programmeringssproget og de anvendte værktøjer, især debuggere .
En debugger er et softwareværktøj, der gør det muligt for programmøren at observere udførelsen af det undersøgte program, stoppe og genstarte det, køre det i slowmotion, ændre værdier i hukommelsen og endda i nogle tilfælde gå tilbage i tiden.
Også nyttige værktøjer i hænderne på en programmør kan være:
Brug af programmeringssprog på højt niveau gør normalt fejlfinding lettere, hvis sådanne sprog for eksempel indeholder undtagelseshåndteringsfaciliteter, der gør det meget nemmere at finde kilden til problemet. I sprog på lavt niveau kan fejl føre til subtile problemer såsom hukommelseskorruption og hukommelseslækager . Så kan det være ret svært at fastslå, hvad der var den oprindelige årsag til fejlen. I disse tilfælde kan komplekse teknikker og fejlfindingsværktøjer være påkrævet.
"Vores personlige valg er at prøve ikke at bruge debuggere, undtagen at se opkaldsstakken eller værdierne af et par variabler . En grund til dette er, at det er meget nemt at gå tabt i detaljerne i komplekse datastrukturer og programudførelsesstier. Vi finder det mindre produktivt at træde gennem et program end hård tænkning og kodekontrol på kritiske punkter.
Det tager mere tid at klikke på operatører end at se operatørernes beskeder for at udstede fejlretningsoplysninger, placeret på kritiske punkter. Det er hurtigere at beslutte, hvor en debug-sætning skal placeres, end det er at gå gennem kritiske sektioner af kode, selv hvis vi antager, hvor disse sektioner er. Endnu vigtigere er det, at debug-sætninger bevares i programmet, og debugger-sessioner er forbigående.
Blind vandring i debuggeren er højst sandsynligt uproduktivt. Det er mere nyttigt at bruge en debugger til at finde ud af tilstanden af det program, hvor det laver en fejl, og så tænk på, hvordan en sådan tilstand kan opstå. Debuggere kan være komplekse og forvirrende programmer, især for begyndere, for hvem de vil være mere forvirrende end nyttige ... "
“Fejlretning er svært og kan tage uforudsigeligt lang tid, så målet er at omgå det meste. Teknikker, der kan hjælpe med at reducere fejlretningstiden, omfatter godt design, god stil , kontrol af grænsetilstande, validering af indledende påstande og rimelighed af kode, defensiv programmering , veldesignede grænseflader, begrænset brug af globale variabler, automatiske kontroller og kontroller. En ounce forebyggelse er et ton kur værd."
— Brian Kernighan og Rob PikeEn anden retning er at gøre fejlfinding så sjælden som muligt. For dette gælder:
Der kan være tale om såkaldt udokumenteret adfærd i programkoden – alvorlige fejl, som ikke optræder under det normale programafviklingsforløb, men som er meget farlige for hele systemets sikkerhed ved et målrettet angreb. Oftest er dette resultatet af programmørfejl. De mest berømte eksempler er SQL-injektion og bufferoverløb . I dette tilfælde er opgaven med at fejlfinde:
Der er sådanne metoder:
Ordbøger og encyklopædier | |
---|---|
I bibliografiske kataloger |