Centralt innehåll

Fakta

Ordet bugg har delvis mytiskt ursprung, men anses i allmänhet komma från dess engelska betydelse insekt eller kryp. Enligt en myt härledde man på någon av de tidigare relästyrda datorerna (som BARK) en felaktig funktion i datorn till en mal som hittades död bland reläerna. Ordet ska emellertid ha använts redan på 1870-talet av Thomas Edison för att beskriva fel i en apparat.
Den första dokumenterade buggen hittades 9 september 1947 i en Mark II Aiken Relay Calculator av Grace Hopper.

Felsökning i kod med hjälp av gummianka (en: Rubber duck debugging) är en metod för att felsöka kod. Namnet är en referens till boken The Pragmatic Programmer, där en programmerare ofta bär runt på en gummianka och felsöker sin kod genom att tvinga sig själv att förklara den, rad för rad, för ankan. Många programmerare har upplevt att när de förklarat sin kod för någon annan har de själva upptäckt problemet i koden.

Gummi-anka

1. Felsökning (debugga)

Det är nästan omöjligt att skriva kod utan att det blir något fel, s.k. buggar. Dessa fel måste hittas och rättas innan programmet kan anses vara klar.

1.1 Olika typer av fel

Att leta efter buggar (fel) och rätta dem i program brukar kallas att felsöka, avlusa eller debugga, som kommer från engelskans debug.

1.2 Debugger

Mycket av en programmerares tid går åt till felsökning (debugging) av framförallt logiska fel. Det finns oftast funktioner i utvecklingsmiljön för att debugga.
En debugger (avlusare på svenska) används för att upptäcka fel under körning av program.
Fungerar inte ett program som vi har tänkt oss kan man med hjälp av debuggern "stega" sig igenom programmet rad för rad samt lägga in stopp i körningen, s.k. brytpunkter i koden och på så sätt hitta felen i programmet.

1.3 Felutskrifter

Fel som visas i konsolfönstret kan vara svåra att förstå för nybörjare

1.4 Tålamod

Vissa buggar kan vara irriterande och svåra att hitta och man känna som mannen i filmen.
Som programmerare kommer man att ägna mycket tid till att leta efter och rätta olika slags buggar. Det gäller att ha tålamod och en bra strategi:

  1. Läs eventuellt felmeddelande även om de ibland kan vara lite svåra att tolka.
  2. Försöka läsa koden och se om du kan upptäcka buggen.
  3. Om du inte hittar felet på radnumret som angavs i felmeddelandet, titta på raden ovanför.
  4. Debugga koden i IDE:n.
  5. Fråga en kompis eller prata med en gummianka (rubberducking).

Begrepp

Bugg: Ett fel i programmet.

Debugga: Felsöka och rätta till fel i koden.

Avlusa: Felsöka och rätta till fel i koden.

Syntax: Språkregler för hur koden ska skrivas i ett programmeringsspråk.

Syntaxfel: Ett fel i en språkregel.

Exekveringsfel: Kallas även programkörningsfel. Är när programmet kraschar när det körs.

Logiskt fel: Programmet går att köra, men man får ett oönskat resultat.

Brytpunkt: En rad i koden där körningen stoppas.

Rubberducking: En metod att hitta fel i koden genom att förklara den för en gummianka.

Övningar

Du kan inte att lära dig att programmera genom att läsa en bok eller titta på videos. Du måste öva på att skriva kod själv och ju mer du övar desto bättre blir du.
  1. Nedan finns 8 rader med kod. Bara en av dem är korrekt skriven, övriga har något syntaxfel. Kan du se vilken rad som är korrekt och vad som är felet i övriga?
    plint('Hej')
    print('Hej")
    print('Hej'
        print('Hej')
    Print("Hej")
    print('Hej')
    print('Hej)
    print("Hej')
  2. Ange ett exempel på när det blir syntaxfel?
  3. Ange ett exempel på när det blir exekveringsfel?
  4. Ange ett exempel på när det blir ett logiskt fel?

Inlämningsuppgift

login     logout    

Exit tickets

Visa läraren när du debuggar. Du ska kunna sätta en brytpunkt, ta bort brytpunkt, stega i koden och kunna se värden för olika variabler.