debugging 2013- jesper steen møller

Post on 08-Dec-2014

205 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Debugging- for rigtige programmører

TRANSCRIPT

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!

top related