Felsöka med Visual Studio Code
I föregående övning lärde du dig vikten av att kunna köra koden steg för steg med felsökningsprogrammet i Node.js. För ditt arbete med Tailwind Traders-programmet behöver du en mer omfattande felsökningsmiljö i din IDE (Integrerad utvecklingsmiljö).
Nu ska vi se hur man konfigurerar felsökningsprogrammet i Visual Studio Code för användning med Node.js.
Så här använder du Visual Studio Code för Node.js-felsökning
I Visual Studio Code används felsökningsprogrammet från fliken Kör .
Om du har en
.js
fil öppen i redigeringsfönstret kan du välja Kör och felsöka och sedan välja Node.js för att direkt felsöka den öppna JavaScript-filen.
Det finns flera andra sätt att börja felsöka i Visual Studio Code. I nästa övning använder vi en launch.json-fil. Utvecklingsteam använder ofta en launch.json-fil för att anpassa körningskonfigurationen. Med konfigurationen som anges i en .json-fil kan du kontrollera den i källkontrollen. Från källkontrollen kan du dela konfigurationen i hela teamet.
Kontrollera flödet genom att lägga till brytpunkter
Till skillnad från det inbyggda kommandoradsfelsökaren Node.js börjar Felsökningsprogrammet för Visual Studio Code omedelbart köra koden. Om programmet slutar snabbt kanske du inte har möjlighet att interagera med felsökningsprogrammet. Därför kanske du vill lägga till brytpunkter innan du kör koden. Vi lägger till och tar bort några brytpunkter i nästa övning.
Om du vill lägga till en brytpunkt i koden letar du upp kodraden i JavaScript-filen (.js
) där du vill lägga till en brytpunkt. Bredvid radnumret för kodsatsen väljer du i vänstermarginalen. När brytpunkten läggs till visas en röd cirkel bredvid radnumret. Om du vill ta bort brytpunkten väljer du den röda cirkeln.
Du kan också använda snabbmenyn högerklicka för att lägga till en brytpunkt. Innehållsmenyn innehåller alternativet Lägg till villkorsstyrd brytpunkt , där du anger ett villkor för att bryta kodkörningen. En villkorlig brytpunkt är endast aktiv när det angivna villkoret uppfylls.
Den här brytpunkten stoppar endast körningen när värdet convertedValue
för är odefinierat.
Översikt över felsökningsprogrammet i Visual Studio Code
När du har konfigurerat brytpunkterna och startat appen visas nya informationspaneler och kontroller på skärmen.
Antal | Name | beskrivning |
---|---|---|
1. | Startkontroller för felsökningsprogram | Längst upp i sidopanelen hittar du startkontrollerna. |
2. | Tillstånd för variabler | Panelen Variabler visar det aktuella tillståndet för dina variabler. |
3. | Tillstånd för bevakade variabler | Panelen Watch visar aktuellt tillstånd för dina övervakade variabler. |
4. | Aktuell anropsstack | Panelen Samtalsstack visar den aktuella anropsstacken. |
5. | Inlästa skriptfiler | Panelen Inlästa skriptfiler visar de JavaScript-filer som har lästs in hittills. |
6. | Brytpunkter | Panelen Brytpunkter visar alla brytpunkter som du har placerat i koden. |
7. | Körningskontroller | Du kan kontrollera körningsflödet för ditt program med hjälp av dessa kontroller. |
8. | Aktuellt körningssteg | Det aktuella körningssteget är markerat i redigeringsfönstret. |
9. | Felsökningskonsol | Felsökningskonsolen kan användas för att visualisera programkonsolloggarna och för att utvärdera uttryck eller köra kod i den aktuella körningskontexten. |
Startkontroller för felsökningsprogram
Längst upp i sidofältet finns startkontrollerna:
Antal | Name | beskrivning |
---|---|---|
1. | Börja felsöka | Börja felsöka programmet. |
2. | Välj aktiv startkonfiguration | Välj den aktiva startkonfigurationen. |
3. | launch.json Redigera filen |
Redigera filen launch.json . Skapa json-filen om du behöver. |
4. | Öppna felsökningskonsolen | Öppna felsökningskonsolen och växla synlighet för panelerna Variables, Watch, Call Stack och Breakpoints.. |
Visa och redigera variablernas tillstånd
När du analyserar orsaken till ett programfel kan du titta på variablernas tillstånd för att söka efter oväntade ändringar. Du kan göra det med panelen Variabler.
Dina variabler visas sorterade efter omfång:
Scope | beskrivning |
---|---|
Lokal | Lokala variabler är tillgängliga i det aktuella omfånget, vanligtvis i den aktuella funktionen. |
Global | Globala variabler är tillgängliga överallt i ditt program. Systemobjekt från JavaScript-körningen ingår också, så bli inte förvånad om det finns mycket att gå igenom där. |
Stängning | Omslutningsvariabler är tillgängliga från den aktuella omslutningen, om sådan finns. En omslutning kombinerar det lokala omfånget för en funktion med omfånget från den yttre funktion som den tillhör. |
Möjliga åtgärder är:
Utveckla omfång: Du kan utveckla omfång och variabler genom att välja pilen. När du visar mer information om objekt kan du se alla egenskaper som definierats i det här objektet.
Ändra variabelvärde: Det går att ändra värdet för en variabel i farten genom att dubbelklicka på variabeln.
Titta på en variabel: Genom att hovra över en funktionsparameter eller en variabel direkt i redigeringsfönstret kan du också titta på dess värde.
Bevaka variabler
Om du vill spåra ett variabeltillstånd över tid eller olika funktioner kan det bli omständligt att söka efter det varje gång. Då är panelen Bevaka praktisk.
Du kan välja plus-knappen och ange ett variabelnamn eller ett uttryck som du vill bevaka. Alternativt kan du högerklicka på en variabel i fönstret Variabler och välja Lägg till för att titta.
Alla uttryck i bevakningsfönstret uppdateras automatiskt när koden körs.
Anropsstack
Varje gång ditt program kommer till en funktion läggs en post till i anropsstacken. När programmet blir komplext och du har funktioner som anropas i funktioner många gånger, representerar anropsstacken anropsspåret för funktioner.
Det är användbart för att hitta orsaken till ett undantag. Om det uppstår en oväntad krasch i programmet visas ofta något som liknar det här i konsolen:
/Users/learn/nodejs/index.js:22
return value.toFixed(2);
^
TypeError: Cannot read property 'toFixed' of undefined
at formatValueForDisplay (/Users/learn/nodejs/index.js:22:16)
at printForeignValues (/Users/learn/nodejs/index.js:31:28)
at Object.<anonymous> (/Users/learn/nodejs/index.js:39:1)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11
Gruppen med at [...]
-rader nedanför felmeddelandet kallas stackspårning. Stackspårningen anger namnet och ursprunget för varje funktion som anropades innan undantaget uppstod. Den kan vara svårt att tolka eftersom den även innehåller interna funktioner från Node.js-körningen.
Det är här som panelen Anropsstack Visual Studio Code kommer till pass. Som standard filtrerar den bort oönskad information och visar bara de relevanta funktionerna från din egen kod. Du kan sedan nysta upp anropsstacken för att ta reda på var undantaget kom från.
Du kan få ytterligare hjälp genom att välja knappen Starta om ram som visas när du hovrar över ett funktionsnamn i stacken. Körningen spolas tillbaka till början av funktionen genom att programmet startas om fram till den tidpunkten.
Visa inlästa skriptfiler
Den här panelen visar alla JavaScript-filer som har lästs in hittills. I stora projekt kan det ibland vara bra att kontrollera vilken fil den aktuella koden körs från.
Brytpunkter
På panelen Brytpunkter kan du se och hantera alla brytpunkter som du lagt till i koden. Du kan även växla alternativ för att bryta vid fångade eller ej fångade undantag. Du kan använda fönstret Brytpunkter för att undersöka programtillståndet och spåra källan till ett undantag med hjälp av anropsstacken när ett inträffar.
Styra körningen
Du kan kontrollera körningsflödet för ditt program med hjälp av dessa kontroller.
Kontrollerna från vänster till höger är:
- Continue or pause execution (Fortsätta eller pausa körningen). Om körningen pausas fortsätter den fram till nästa brytpunkt. Om programmet körs växlar knappen till en pausknapp som du kan pausa körningen med.
- Step over (Gå förbi). Kör nästa instruktion i den aktuella kontexten (samma som kommandot
next
i det inbyggda felsökningsprogrammet). - Step into (Gå vidare till). Som Step over (Gå förbi), men om nästa instruktion är ett funktionsanrop går du vidare till den första instruktionen i funktionen (samma som kommandot
step
). - Gå ut. Om du är inne i en funktion kör du den återstående koden för den här funktionen och går tillbaka till -instruktionen efter det första funktionsanropet
out
(samma som kommandot). - Restart (Starta om). Startar om programmet från början.
- Stop (Stoppa). Avsluta körningen och stäng felsökningen.
Använda felsökningskonsolen
Felsökningskonsolen kan visas eller döljas genom att trycka på Ctrl+Skift+Y (Windows, Linux) eller Cmd+Skift+Y (Mac). Den kan användas för att visualisera programkonsolloggarna och för att utvärdera uttryck eller köra kod i det aktuella körningsinnehållet exec
, som kommandot i det inbyggda Node.js-felsökningsprogrammet.
Du kan ange ett JavaScript-uttryck i inmatningsfältet längst ned i felsökningskonsolen. Tryck sedan på Retur för att utvärdera det. Resultatet visas direkt i konsolen.
På så sätt kan du snabbt kontrollera ett variabelvärde, testa en funktion med olika värden eller ändra det aktuella tillståndet.
Lägg till logpoints i stället för console.log
Linters flaggar console.log
instruktioner som fel. För att få samma effekt som console.log
-instruktioner använder du Visual Studio Code-loggpunkter i stället, som skrivs ut till felsökningskonsolen.
Lägg till en loggpunkt genom att högerklicka i samma område som du använde för att lägga till en brytpunkt och välj sedan Lägg till loggpunkt. Ange ett meddelande som visas vid den punkten i koden.
Precis som brytpunkter ändrar loggpunkter inte koden på något sätt och används endast under felsökning. Du har inte längre någon ursäkt om du råkar glömma kvar console.log('here')
när koden skickas vidare till produktion.