Høj på debugging

Almindeligvis har debugging et ret kedeligt ry; det har ikke samme aura af kreativitet og frihed som ny funktionalitet, og kan sjældent bruges som bulletpoint ("Nu virker det") på marketingsafdelingens liste over fantastiske forbedringer i den nye version. Men derfor kan der alligevel være stor værdi i at rette fejl, både for udvikleren og for kunden, som forhåbentlig har fået en oplevelse af engagement og imødekommenhed, på trods af, at mennesker er uperfekte (spørg bare Jørgen Leth) og der er fejl i software.
 
Nogle gange har vores tester været så venlig at skære problemet ud i pap og severet bug reporten på et sølvfad, så man kan rette 5 bugs i timen og føle sig vanvittigt effektiv. Den slags kan især være en kærkommen afveksling, når man har siddet og stirret på et Swing-layoutproblem i timevis uden at blive ret meget klogere på hvordan eller hvorfor. Og så er der de bug reports, hvor andre har måttet give op og sagt "Kære udvikler. Dette er et svært og væmmeligt problem. Vi stoler på, at du ved hjælp af telepatiske evner, breakpoints og kaffe kan finde en løsning".
 
Man kan godt få lidt ondt i hovedet af den slags bug reports, men omvendt har jeg efterhånden samme betryggende fornemmelse, som når jeg ser CSI: Videnskaben plejer at sejre til sidst; fejlen skal nok blive fundet. Og apropos CSI i øvrigt, kan jeg ikke sige mig fri for at føle et vist element af spænding, når jeg nærmer mig problemets årsag. På et tidspunkt er sporene så tydelige, at man for hver iteration kan mærke, at man kommer tættere og tættere på, indtil bug'en til sidst spræller i nettet, og man mærker den velkendte fornemmelse af belønningsstoffer, der strømmer til hjernen og markerer afslutningen på to dages jagt på synderen. Aaaaahhh....

Kommentarer (6)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Simon Krogh

Deep Purple sang en gang "It's not the kill, it's the thrill of the chase." og det passer også godt på debugging, synes jeg. Som du selv skriver, så kan jagten på det lille insekt (buggen) være ren CSI, men åh hvor er det utilfredsstillende, synes jeg, når det der skal til - "the kill" om man vil - er et sæt ekstra anførselstegn eller et objekt, der lige skal have en .open; eller sådan noget trivielt. Så sidder man og har brugt tre timer på at tilføje en enkelt linje kode og føler sig en smule... uproduktiv. Også selvom man godt ved at man har lagt et ærligt stykke arbejde i det. Ja, sådan har jeg det ihvertfald :)

  • 0
  • 0
Anne-Sofie Nielsen

Hej Simon,

Du har helt ret i, at det ofte er urimelig lidt kode, der skal til for at rette en fejl, der kan tage meget langt tid at finde. Nu har linjers-kode jo heller aldrig været noget særlig godt produktivitetsmål ;-) men jeg kan godt genkende fornemmelsen...

  • 0
  • 0
Michael Lund

Dem der ikke er der i et debug build, men er der hver gang testerne prøver det på et releasebuild. Der kan man virkelig opleve nogle spøjse ting. F.eks. følgende stump (fuldt valide) C++ kode:

void* myMethod(int a) { if(a<2) return &myObject; else GetPointerToObject(a); }

Bemærk and else grenen ikke returnerer noget (hvilket var meningen), men da GetPointerToObject kaldet har placeret returværdien i det rigtige "retur-register" i CPU ligger værdien også der nå myMethod når til ende, og det virker efter hensigten. I release mode opdager optimizeren at else-grenen ikke returnerer noget og fjerner else grenen fuldstændigt, så nu ligger der garbage i returregisteret, og programmet crasher. Den slags fejl kan godt tage lidt tid at finde, men er meget sjove - især når man ikke selv har lavet dem ;o)

  • 0
  • 0
Henrik Eiriksson

Jeg bruger ofte en CSI Miami teknik ifm. debugging. Jeg efterligner Horacio's dyyybe, autoritære, stemme og så melder bug'en sig selv - den ved at det ikke nytter. Grissom virker ikke ligeså godt - har ikke nær samme pondus... ;-)

  • 0
  • 0
Morten Fordsmand

Så jeg husker den glæde det var at skulle finde og eventuelt fejlrette en fejl, der gav SYS3175, ja det var altså det OS/2 kaldte en protection exception.

Herunder at gennemskue kaldkonventionen i sourceløse c++-runtimes, og det at dokumentere et loop i OS/2's kerne. (Det forudsattes bare at man først åbnede en notesbase på et lan-drev, og derefter aktiverede java i processen) ;-)

Se det var morsom debugging - jeg bliver sku høj ved mindet. (egentlig burde dette alene gøre mig moden til at modtage moderorganets nørd-trøje)

  • 0
  • 0
Anders Porsbo

Tjaa, jeg lavede noget rigtig grim (ikke med vilje) ansi-c kode for nogle år siden... resultaterne var ikke korrekte, så debuggeren måtte hjælpe.

Jeg husker min forbavselse, da min debugger gav mig en segfault... ikke i mit program, men selve debuggeren -- jeg tog et screenshot, men har ikke kunne finde det til lejligheden :)

  • 0
  • 0
Log ind eller Opret konto for at kommentere