debugging 2013- jesper steen møller

19
Debugging - for alle 1 10 features du (måske) ikke kendte i Eclipses Java Debugger Jesper Steen Møller 26. oktober 2013

Upload: mediehuset-ingenioren-live

Post on 08-Dec-2014

205 views

Category:

Technology


0 download

DESCRIPTION

Debugging- for rigtige programmører

TRANSCRIPT

Page 1: Debugging 2013- Jesper Steen Møller

Debugging - for alle1

10 features du (måske) ikke kendte i Eclipses Java Debugger

Jesper Steen Møller26. oktober 2013

Page 2: Debugging 2013- Jesper Steen Møller

Hvem er jeg så?

● Jesper Steen Møller● NineConsult A/S● Datalog (DIKU)● 40 år● C, C++, Java,

Groovy, Scala● Selvbetjeningssyst

emer, ”digital forvaltning”

Page 3: Debugging 2013- Jesper Steen Møller

Fejlsøgning

Mistanke

Symptom

Forventning

Bevis

Teori

Løgn

Miljø

Page 4: Debugging 2013- Jesper Steen Møller

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

Page 5: Debugging 2013- Jesper Steen Møller

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!

Page 6: Debugging 2013- Jesper Steen Møller

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!

Page 7: Debugging 2013- Jesper Steen Møller

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

Page 8: Debugging 2013- Jesper Steen Møller

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

Page 9: Debugging 2013- Jesper Steen Møller

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

Page 10: Debugging 2013- Jesper Steen Møller

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

Page 11: Debugging 2013- Jesper Steen Møller

5. Pil ved tilstanden

● Du kan rette i data

● Ikke kun simple værdier

● Demonstration

Page 12: Debugging 2013- Jesper Steen Møller

6. Kom godt omkring i koden

● Hyperlink-debugging● Run to line● Drop to frame

Page 13: Debugging 2013- Jesper Steen Møller

7. Spar tid med filtre

● Step filtering● Filtrering af simple gettere og settere● Demonstration

Page 14: Debugging 2013- Jesper Steen Møller

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

Page 15: Debugging 2013- Jesper Steen Møller

9. Få styr på dine objekter

● Find alle instanser af given type● Find alle referencer til instanser● Demonstration

Page 16: Debugging 2013- Jesper Steen Møller

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

Page 17: Debugging 2013- Jesper Steen Møller

Spørgsmål?

Page 18: Debugging 2013- Jesper Steen Møller

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

Page 19: Debugging 2013- Jesper Steen Møller

Tak!