debugging 2013- jesper steen møller
DESCRIPTION
Debugging- for rigtige programmørerTRANSCRIPT
Debugging - for alle1
10 features du (måske) ikke kendte i Eclipses Java Debugger
Jesper Steen Møller26. oktober 2013
Hvem er jeg så?
● Jesper Steen Møller● NineConsult A/S● Datalog (DIKU)● 40 år● C, C++, Java,
Groovy, Scala● Selvbetjeningssyst
emer, ”digital forvaltning”
Fejlsøgning
Mistanke
Symptom
Forventning
Bevis
Teori
Løgn
Miljø
Fejlsøgning - II
Tjek af virkelighedi forhold til
Forventning, Løgne ogMiljømæssige variationer
Mistanke
Teori
Symptom
Forsøg
Bevis
Kan detreproduceres?
Erfaringsgæt...
Fix
Debuggeren er (næst)sidste udvej
● Lad være med at udvikle fra debuggeren!● Der er andre og bedre måder at
specificere og teste funktionalitet på● Debugning er en manuel proces, men
mange fejlmuligheder● Hvis det er for svært at skrive en test til
din kode, så skriv koden om!● Jeg mener det!
Debugging som kortlægning
● Dit Java IDE kan fortælle dig om den statiske sammenhæng i kodebasen
● Debuggeren kan fortælle dig noget om dynamiske sammenhænge
● Hurtigere ind til problemets kerne● Plus: Reflection, bytecode, m.m.
Use thesource,Luke!
1. Simple Breakpoints
● Et breakpoint er en fælde– Formuler din mistanke eller teori– Gør dig det klar hvad du forventer at se– Sæt så breakpointet og kør– Kan du be- eller afkræfte din teori, eller
bestyrke din mistanke?● Demonstration
2. Betingede Breakpoints
● Hvis du kan kvalificere din teori lidt, kan du spare en masse arbejde:– Sæt en bedre fælde– Formulér en betingelse (som Java)– Indsæt den som 'Conditional
Breakpoint'– Kør– Nå, rammer du det nu?
● Demonstration
3. Watchpoints
● Er der særlige værdier i et felt, du har mistanke til?– Den statiske måde: Find al kode, der
tilgår feltet, og alt hvad der kalder det– Med debuggeren: Sæt et watchpoint,
og læn dig tilbage● Demonstration
4. Struktur på data
● Eclipse kan afkode visse strukturer for dig● Du kan selv definere visning af egne
strukturer● Og vise komplekse udtryk● Lavt hængende frugt: En god toString()● Demonstration
5. Pil ved tilstanden
● Du kan rette i data
● Ikke kun simple værdier
● Demonstration
6. Kom godt omkring i koden
● Hyperlink-debugging● Run to line● Drop to frame
7. Spar tid med filtre
● Step filtering● Filtrering af simple gettere og settere● Demonstration
8. Debug hvor koden kører
● Al debugging kører via TCP/IP alligevel● Der skal blot sættes parametre ved
opstart● Det er ikke uden udfordringer● Demonstration
9. Få styr på dine objekter
● Find alle instanser af given type● Find alle referencer til instanser● Demonstration
10. Referenceleaks er også bugs
● Eclipse Memory Analyzer gør det nemt– Kan undersøge kørende processer– Skriv et heap dump ved OOM– Memory Analyzer gør resten
● Demonstration
Spørgsmål?
Opsummering
●Debuggeren kan nogle tricks, der er svære at gøre på anden vis●Brug den til at udforske ukendt territorium, ikke til at teste din kode●Stol ikke på noget eller nogen ...●... mindst af alt dig selv
Tak!