Læringsmål

  • Kan bruge breakpoints til at stoppe programkørslen på udvalgte steder
  • Kan anvende Step Into, Step Over og Step Out til at analysere kodeflow
  • Kan læse og ændre variabelværdier i Locals og Autos under debugging
  • Kan identificere og rette simple logiske fejl ved hjælp af debuggeren
  • Forstår debugging som et aktivt værktøj til problemløsning — ikke kun fejlretning

Fejlfinding og debugging

Debugging er kunsten at finde og rette fejl i kode. I GF2 bruger I primært Visual Studio på Windows — her er en introduktion til debuggeren og de vigtigste teknikker.

Debugging handler om at forstå, hvad koden faktisk gør under kørsel — ikke kun at fikse røde fejlbeskeder.

Kom i gang — seks trin

1. Sæt breakpoints

Klik i den grå bjælke ved siden af linjenummeret. Et rødt stoppunkt (breakpoint) vises. Når programmet kører, stopper det på den linje.

2. Kør din kode

Klik Start Debugging eller tryk F5. Programmet kører indtil det rammer dit breakpoint.

3. Gennemgå koden trin for trin

Brug step-knapperne eller genveje:

Tast Navn Gør
F11 Step Into ind i metodekald
F10 Step Over Kør næste linje — spring over metodekald
Shift+F11 Step Out Færdiggør nuværende metode, stop i kaldende kode
F5 Continue Kør videre til næste breakpoint

Fra venstre i værktøjslinjen: Step Into (F11), Step Over (F10), Step Out (Shift+F11).

Eksempel: Du er på ShowResult(score);

  • F10 — kører hele ShowResult og stopper på næste linje
  • F11 — går ind i ShowResult og stopper på første linje der

4. Se variabler

I Autos og Locals fanerne ser du aktuelle værdier for variabler i scope. Watch lader dig følge specifikke udtryk (fx score >= 60).

Call Stack viser kæden af metodekald, der førte til breakpointet — nyttigt til at forstå, hvorfor du er endt her.

Hover over variabler i editoren for hurtigt at se værdier uden at åbne vinduer.

5. Ændre variabelværdier

Højreklik på en variabel i Autos eller LocalsModify Value. Test, hvordan andre værdier påvirker programmets adfærd — uden at genstarte.

6. Fortsæt kørsel

Tryk Continue eller F5 for at køre videre til næste breakpoint eller programmets afslutning.

Debugging er en proces — det tager tid at finde fejl. Med praksis og tålmodighed bliver du dygtigere til det.

Breakpoint-typer

Visual Studio understøtter flere typer breakpoints:

  1. Breakpoint — stopper på en bestemt linje (den du bruger mest)
  2. Condition breakpoint — stopper kun hvis en betingelse er opfyldt (fx i == 42 eller score < 0)
  3. Tracepoint — logger en besked uden at stoppe programmet — god til at spore flow
  4. Temporary breakpoint — aktiv én gang, fjernes automatisk efter stop
  5. Dependent breakpoint — aktiveres først efter et andet breakpoint er ramt

I praksis bruger du næsten altid det normale breakpoint. Højreklik på breakpointet for betingelser og avancerede indstillinger.

Logiske fejl vs. compile-fejl

Compile-fejl (røde understregninger) — programmet kører slet ikke. Logiske fejl er værre: programmet kører, men giver forkert resultat.

// Logisk fejl — gennemsnit bliver forkert ved heltalsdivision
double average = (a + b + c) / 3;

// Rettelse
double average = (a + b + c) / 3.0;

Ved logiske fejl er der ingen rød fejlbesked — sæt breakpoint, kør med F5, og tjek variabler trin for trin.

Exceptions og try/catch

En exception er en runtime-fejl — programmet crasher, medmindre du fanger den:

Uden catch stopper programmet med fejlbesked — brug debuggeren til at læse stack trace og finde linjen.

Unit tests og videre læring

Visual Studio har også værktøjer til softwaretest — fx unit tests. Det er et naturligt næste skridt efter manuel debugging.

Microsofts læringsforløb:

Use Visual Studio for modern development (Microsoft Learn)

Generel C#-testdokumentation:

Unit testing in .NET

Git-trin

  • Branch: main
  • Commit: docs: debugging og breakpoints

Opsummering

  • F5 starter debugging; breakpoints stopper på valgte linjer
  • F10/F11/Shift+F11 styrer gennemløb af kode
  • Locals, Autos og Watch viser variabelværdier — du kan også ændre dem under kørsel
  • Condition breakpoints og tracepoints giver finere kontrol
  • Debugging er aktiv problemløsning — især vigtig ved logiske fejl uden compile-errors

Test din viden

Spørgsmål 1

Hvordan sætter du et breakpoint i Visual Studio?

Spørgsmål 2

Hvad er forskellen på F10 (Step Over) og F11 (Step Into)?

Spørgsmål 3

Hvor ser du aktuelle variabelværdier under debugging?

Spørgsmål 4

Hvad er en logisk fejl?

Spørgsmål 5

Hvad gør Shift+F11 (Step Out)?

Spørgsmål 6

Hvad er et condition breakpoint?

Spørgsmål 7

Hvorfor er try/catch relevant ved debugging?