Forstå .NET-feilsøkingsprogrammet i Visual Studio Code
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#.
Visual Studio Code installerer C#-utvidelsen og viser en ekstra ledetekst for å legge til nødvendige ressurser for å bygge og feilsøke 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.
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-.
Oversikt over feilsøking av Visual Studio-kode
Når du har konfigurert breakpoints og startet appen, vises nye informasjonspaneler og kontroller på skjermen.
- Startkontroller for feilsøkingsprogram
- Variabler-tilstand
- Overvåkede variabler
- Gjeldende anropsstakk
- Stoppunkter
- Kjøringskontroller
- Gjeldende kjøringstrinn
- Feilsøkingskonsoll
Startkontroller for feilsøkingsprogram
Øverst på sidepanelet finner du startkontrollene:
- Start feilsøking.
- Velg aktiv startkonfigurasjon.
- Rediger
launch.json-filen. Opprett det hvis du trenger det. - Å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.
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.
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.
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.
Åpne .vscode/launch.json.
Endre innstillingen
consoletilintegratedTerminalfra:"console": "internalConsole",Til:
"console": "integratedTerminal",Lagre endringene.
I neste enhet lærer du hvordan du bruker feilsøkingsprogrammet til å løse feilen i Fibonacci-koden vi så tidligere.