Forstå .NET-feilsøkingsprogrammet i Visual Studio Code

Fullført

I den forrige enheten lærte du at et feilsøkingsprogram hjelper deg med å kontrollere kjøringen av programmet og observere tilstanden. I denne delen lærer du hvordan du utfører begge disse oppgavene i Visual Studio Code.

La oss starte med å lære hvordan du konfigurerer feilsøkingsprogrammet for Visual Studio Code til å bruke det med .NET.

Konfigurer Visual Studio Code for .NET-feilsøking

Første gang du åpner en C#-fil i Visual Studio Code, får du en melding om å installere anbefalte utvidelser for C#.

Skjermbilde av Visual Studio Code-ledeteksten om å installere C#-utvidelsen.

Visual Studio Code installerer C#-utvidelsen og viser en ekstra ledetekst for å legge til nødvendige ressurser for å bygge og feilsøke prosjektet.

Skjermbilde av Visual Studio Code-ledeteksten om å legge til nødvendige ressurser for å bygge og feilsøke .NET-prosjektet.

Notat

C#-språkstøtte i Visual Studio Code er en valgfri installasjon fra Marketplace-. Visual Studio Code ber deg automatisk om å installere denne filtypen når du åpner en C#-fil hvis du ikke har gjort det ennå. Hvis du har problemer med å bygge eller feilsøke .NET-programmet i Visual Studio Code, bør du kontrollere at prosjektet har de nødvendige ressursene for C#-språkstøtte.

Stoppunkter

Som du lærte i forrige enhet, hjelper et feilsøkingsprogram deg med å analysere og kontrollere kjøringen av programmet. Når du starter feilsøkingsprogrammet for Visual Studio-kode, begynner den umiddelbart å kjøre koden. Siden koden utføres raskt, må du kunne stanse programmet midlertidig på en hvilken som helst setning. Du bruker breakpoints til å gjøre dette.

Du kan legge til et bruddpunkt i Visual Studio Code ved å klikke på venstre side av linjenummeret på linjen du vil bryte. Du skal se en rød sirkel etter at breakpoint er aktivert. Hvis du vil fjerne den, velger du den røde sirkelen på nytt.

Skjermbilde av et bruddpunkt som er lagt til i redigeringsprogrammet for Visual Studio Code.

Hvis du høyreklikker for å legge til et breakpoint, kan du også velge Legg til betinget. Med denne spesielle typen breakpoint kan du angi en betingelse for å bryte kjøringen. Dette breakpointet vil bare være aktivt når den angitte betingelsen er oppfylt. Du kan også endre et eksisterende bruddpunkt ved å høyreklikke det og velge Rediger breakpoint-.

Skjermbilde av hvordan du angir et betinget bruddpunkt i Visual Studio Code.

Oversikt over feilsøking av Visual Studio-kode

Når du har konfigurert breakpoints og startet appen, vises nye informasjonspaneler og kontroller på skjermen.

skjermbilde av feilsøkingsoversikten for Visual Studio-kode.

  1. Startkontroller for feilsøkingsprogram
  2. Variabler-tilstand
  3. Overvåkede variabler
  4. Gjeldende anropsstakk
  5. Stoppunkter
  6. Kjøringskontroller
  7. Gjeldende kjøringstrinn
  8. Feilsøkingskonsoll

Startkontroller for feilsøkingsprogram

Øverst på sidepanelet finner du startkontrollene:

Skjermbilde av Visual Studio Code debug sidepanelkontroller.

  1. Start feilsøking.
  2. Velg aktiv startkonfigurasjon.
  3. Rediger launch.json-filen. Opprett det hvis du trenger det.
  4. Åpne feilsøkingsterminalen.

Vise og redigere variabler-tilstanden

Når du analyserer årsaken til en programfeil, kan du se variablenes tilstand for å se etter uventede endringer. Du kan bruke variabler-panelet til å gjøre dette.

Variablene vises organisert etter omfang:

  • Lokale variabler: Tilgjengelig i gjeldende omfang, vanligvis gjeldende funksjon.
  • Globale variabler: Tilgjengelig fra overalt i programmet. Systemobjekter fra JavaScript-kjøretiden er også inkludert, så ikke bli overrasket hvis du ser mange ting der inne.
  • Lukkingsvariabler: Tilgjengelig fra gjeldende avslutning, hvis det er noen. En avslutning kombinerer det lokale omfanget av en funksjon med omfanget fra den ytre funksjonen den tilhører.

Du kan utfolde omfang og variabler ved å velge pilen. Når du utfolder objekter, kan du se alle egenskapene som er definert i objektet.

Det er mulig å endre verdien for en variabel på farten ved å dobbeltklikke variabelen.

Ved å holde pekeren over en funksjonsparameter eller en variabel direkte i redigeringsvinduet, kan du også kikke på verdien.

Skjermbilde av variabel pekerfølsom under feilsøking.

Se variabler

Det kan være kjedelig å søke etter en variabel tilstand hver gang du vil spore den over tid eller forskjellige funksjoner. Det er her Watch-panelet er nyttig.

Du kan velge Plus-knappen for å skrive inn et variabelnavn eller et uttrykk å se på. Som et alternativ kan du høyreklikke en variabel i Variabler-panelet og velge Legg til for å se.

Alle uttrykk i overvåkingspanelet oppdateres automatisk etter hvert som koden kjøres.

Anropsstakk

Hver gang programmet angir en funksjon, legges det til en oppføring i anropsstakken. Når programmet blir komplekst og du har funksjoner som kalles i funksjoner mange ganger, representerer anropsstakken sporet av funksjonsanrop.

Det er nyttig å finne kilden til et unntak. Hvis du har et uventet krasj i programmet, vil du ofte se noe i konsollen som følgende eksempel:

Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
   at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9

Gruppen med at [...] linjer under feilmeldingen kalles en stakksporing. Stakksporingen gir navnet og opprinnelsen til hver funksjon som ble kalt før den endte opp med unntaket. Det kan være litt vanskelig å tyde, fordi det også inneholder interne funksjoner fra .NET-kjøretiden.

Det er her Visual Studio Code Call stack-panelet er nyttig. Den filtrerer ut uønsket informasjon for å vise deg bare de relevante funksjonene fra din egen kode som standard. Deretter kan du slappe av i denne anropsstakken for å finne ut hvor unntaket stammer fra.

Breakpoints-panel

I Breakpoints-panelet kan du se og veksle alle bruddpunktene du har plassert i koden. Du kan også veksle mellom alternativer for å bryte oppfanget eller uoppnevnt unntak. Du kan bruke Breakpoints-panelet til å undersøke programtilstanden og spore kilden til et unntak ved hjelp av call stack når det oppstår.

Utføring av kontroll

Du kan kontrollere kjøringsflyten i programmet ved hjelp av disse kontrollene.

Skjermbilde av debuggeringskontrollene for Visual Studio-kode.

Fra venstre mot høyre er kontrollene:

  • Fortsett eller stans kjøringen midlertidig: Hvis kjøringen er stanset midlertidig, vil den fortsette til neste breakpoint er truffet. Hvis programmet kjører, bytter knappen til en pauseknapp som du kan bruke til å stanse kjøringen midlertidig.
  • trinn over: Utfører neste kodesetning i gjeldende kontekst.
  • gå inn i: På samme måte som gå over, men hvis neste setning er et funksjonsanrop, går du videre til den første kodesetningen i denne funksjonen (samme som kommandoen step).
  • Gå ut: Hvis du er inne i en funksjon, kjører du den gjenværende koden for denne funksjonen og hopper tilbake til setningen etter det første funksjonskallet (samme som out-kommandoen).
  • Startpå nytt: Start programmet på nytt fra begynnelsen.
  • Stopp: Avslutt kjøringen, og avslutt feilsøkingsprogrammet.

Bruk feilsøkingskonsollen

Du kan vise eller skjule feilsøkingskonsollen ved å velge CTRL+SKIFT+Y for Windows og Linux. Velg Cmd+SHIFT+Y for Mac. Du kan bruke feilsøkingskonsollen til å visualisere programkonsollloggene. Du kan også bruke den til å evaluere uttrykk eller kjøre kode i gjeldende kjøringsinnhold, for eksempel kommandoer eller variabelnavn i det innebygde .NET-feilsøkingsprogrammet.

Du kan skrive inn et .NET-uttrykk i inndatafeltet nederst i feilsøkingskonsollen, og deretter velge Enter for å evaluere det. Resultatet vises direkte i konsollen.

Skjermbilde av Feilsøkingskonsoll for Visual Studio Code.

Ved hjelp av feilsøkingskonsollen kan du raskt kontrollere en variabelverdi, teste en funksjon med forskjellige verdier eller endre gjeldende tilstand.

Notat

Selv om feilsøkingskonsollen er svært nyttig for å kjøre og evaluere .NET-kode, kan det være litt forvirrende når du prøver å kjøre eller feilsøke et .NET Console-program fordi feilsøkingskonsollen ikke godtar terminalinndata for et program som kjører.

Hvis du vil håndtere terminalinndata under feilsøking, kan du bruke den integrerte terminalen (ett av Visual Studio Code-vinduene) eller en ekstern terminal. I denne opplæringen bruker du den integrerte terminalen.

  1. Åpne .vscode/launch.json.

  2. Endre innstillingen console til integratedTerminal fra:

    "console": "internalConsole",
    

    Til:

    "console": "integratedTerminal",
    
  3. Lagre endringene.

I neste enhet lærer du hvordan du bruker feilsøkingsprogrammet til å løse feilen i Fibonacci-koden vi så tidligere.