Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

Debuggeren er et verktøy som brukes til å analysere kjørende kode, noe som kan være svært nyttig når man vil forstå og evt. rette feil i et program.

Eclipse sin debuggingmodus

Eclipse kan kjøre programmer i såkalt debuggingmodus, som gir muligheten til å stoppe programmet underveis på spesifikke steder og kjøre programmet trinnvis, f.eks. linje for linje. For å kjøre Eclipse i debuggingmodus trykker du på det lille ikonet av en bille (bug) som ligger rett ved siden av knappen for "kjør" (se bilde), eventuelt velg Run > Debug.

Image Added

 

De viktigste panelene for debugging (feilfinning) er tilgjengelige i TDT4100-perspektivet, så du trenger ikke bytte perspektiv for å debugge programmet ditt. Hvis du likevel har lyst til å gjøre det har Eclipse har et eget perspektiv for formålet som du finner ved å velge Debug øverst . Den kommer med et eget perspektiv, som du vinner ved å velge "Debug" øverst i høyre hjørne av skjermen (se bilde). Dersom dette valget ikke vises, kan du trykke på den lille hvite knappen med et pluss-tegn like ved , og velge Debug fra listen og trykke OKlista. Eventuelt kan du trykke Window > Perspective > Open Perspective... > Debug. For å komme tilbake til det gamle perspektivet velger du "Java" TDT4100 fra samme sted.  

Image Removed 

Breakpoints

Uansett hvilket perspektiv du bruker kan du skreddersy det ved å dra rundt på de forskjellige panelene.

Image Added

Image Added

Debug-perspektivet, med de essensielle debuggingpanelene Debug, Breakpoints og Variables i standard-utlegget. Vi anbefaler utlegget som er vist for TDT4100-perspektivet.

Image Added

TDT4100-perspektivet, med dets standard-utlegg av paneler. Det inneholder de samme tre debuggingpanelene.

 

I tillegg til de standard panelene har vi installert et panel kalt debug visualisation view som du får opp ved å trykke Window > Show View > Debug Visualisation View. Panelet vil generere grafiske representasjoner av variabler i debuggingmodus. Dette er nyttig når man begynner å jobbe med større objektstrukturer.

Stoppunkter (breakpoints)

Når du kjører programmet i debuggingmodus, Når du debugger kode har du muligheten til å stoppe midt i et kjørende program. Da må du underveis, men du må fortelle Eclipse hvor du ønsker at programmet skal stoppe. Dette gjøres ved å markere koden med et såkalte stoppunkt (eng: breakpoint). Du kan sette inn et punkt stoppunkt ved å dobbeltklikke (eller høyreklikke og trykke Toggle Breakpoint) i margen til venstre for den linjen du befinner deg på kodelinja du ønsker å stoppe før - da dukker det opp en liten blå sirkel som markerer stoppunktet. Legg også merke til at du kan velge "Breakpoints" oppe til høyre. Her får du opp Stoppunktet vil også vises i en liste i Breakpoints-panelet, som alltid viser en liste over alle punkter du har lagt til.  

Image Removed

Når stoppunkt først er laget, kan de deaktiveres og reaktiveres, vha. avkrysninsboksene i lista.

Image Added

Ved kjøring i debuggingmodus, Når du legger inn breakpoints vil Eclipse stoppe rett før linjen med breakpointet kjøres. Dersom du starter å debugge programmet i eksempelet over vil du derfor ikke få vite verdien av isEven, siden den ikke finnes før linjen har kjørt. Du vil derimot få vite verdien av isOdd siden denne nettopp har blitt evaluert. Ved å velge "Variables" oppe til høyre på skjermen får du en oversikt over alle variabler som finnes i programmet, samt verdien de harstoppunktet. Hver gang kjøringen stopper, vil Variables-panelet vise verdien til variablene som er aktive der kjøringen stoppet. Dersom du kjører kodesnutten over vil variablene tall og i ha verdier (henholdsvis 10 og 5), mens resultat ikke vil være opprettet ennå. Dersom du bare vil vite verdien på en enkelt variabel kan du holde musepekeren over den i kodevinduet.

For at Eclipse skal ta hensyn til breakpointene må du kjøre koden i debuggingsmodus. Denne finner du rett ved siden av knappen for "kjør". Se figuren under. 

Image Removed

Nå er du i gang og programmet vil, som nevnt over, stoppe før det første breakpointet det finner.

Debug-panelet vil vise hvilke metodekall som er aktive (men på vent), den såkalt kall-stacken. Ved å velge en annen enn den øverste vil du se variablene som er aktive der.

Image Added

Navigere i et stoppet program

Når et program har stoppet ved et breakpoint har stoppunkt har du ulike måter å fortsette gå videre på. De to store mulighetene er å fortsette eller å steppe gjennom koden trinnvis. Å fortsette betyr vil si at man kjører koden til neste breakpointstoppunkt, mens å steppe kjøre trinnvis betyr at man kjører kodelinjene kodelinjer en etter en på kommando fra brukeren. De viktigste knappene for å navigere i et stoppet program er vist på figuren nedenfor. 

Image RemovedImage Added

En forklaring på hva de ulike knappene gjør, fra venstre mot høyre, er gitt nedenfor. De du kommer til å bruke desidert mest er notert med fet skrift.

Image Added

  • Resume: Koden kjøres frem til neste breakpointneste stoppunkt
  • Suspend: Brukes for å avslutte tråder (ikke pensum)
  • Terminate: Avslutter kjøringen
  • Disconnect: Brukes hvis du degbugger debugger et program som ikke er på din lokale maskin (ikke pensum)
  • Step intoIntoEn del av steppe-funksjonenvariant av trinnvis kjøring. Går inn i neste blokk med kode. Dersom det er et metodekall på neste linje som skal utføres, vil Step into Into ta deg inn i denne slik at du kan fortsette debuggingen trinnvis kjøring der. 
  • Step over: Tar deg til neste kodelinje i den filen du er i nåOver: Utfører hele kodelinja du står på. Dersom du har et metodekall på linjen vil du altså ikke gå inn i denne metoden, men utføre den ferdig. 
  • Step return: Dersom du har brukt Step into for å komme inn i en metode vil Step return ta deg ut igjen. Return: Kjører koden videre inntil den returnerer fra metoden du er i.
  • Drop to frame: Spoler tilbake til en ventende metode og lar deg kjøre koden derfra på nytt!Drop to frame: Eclipse har støtte for å "gå bakover". (???)
  • Use Step Filters: Debuggeren har støtte for å filtrere ut klasser man ikke ønsker å debugge. Denne funksjonen tvinger alle step-knapper til å bruke disse filtrene.

...

Se også: