Informatie over het .NET-foutopsporingsprogramma in Visual Studio Code

Voltooid

In de vorige les hebt u geleerd dat u met een foutopsporingsprogramma de uitvoering van uw programma kunt beheren en de status ervan kunt observeren. In deze sectie leert u hoe u beide taken uitvoert in Visual Studio Code.

Laten we beginnen met het configureren van het foutopsporingsprogramma van Visual Studio Code voor gebruik met .NET.

Visual Studio Code configureren voor foutopsporing in .NET

De eerste keer dat u een C#-bestand opent in Visual Studio Code, ontvangt u een prompt om aanbevolen extensies voor C# te installeren.

schermopname van de Visual Studio Code-prompt om de C#-extensie te installeren.

Visual Studio Code installeert de extensie C# en geeft een extra prompt weer om vereiste assets toe te voegen om uw project te bouwen en fouten op te sporen.

schermopname van de prompt van Visual Studio Code om vereiste assets toe te voegen voor het bouwen en opsporen van fouten in uw .NET-project.

Notitie

C#-taalondersteuning in Visual Studio Code is een optionele installatie uit de Marketplace. Visual Studio Code vraagt u automatisch om deze extensie te installeren wanneer u een C#-bestand opent als u dat nog niet hebt gedaan. Als u problemen ondervindt met het bouwen of opsporen van fouten in uw .NET-toepassing in Visual Studio Code, moet u controleren of uw project over de vereiste assets beschikt voor C#-taalondersteuning.

Onderbrekingspunten

Zoals u in de vorige les hebt geleerd, helpt een foutopsporingsprogramma u bij het analyseren en beheren van de uitvoering van uw programma. Wanneer u het foutopsporingsprogramma van Visual Studio Code start, wordt uw code onmiddellijk uitgevoerd. Omdat uw code snel wordt uitgevoerd, moet u het programma op een willekeurige instructie kunnen onderbreken. Gebruik hiervoor breekpunten .

U kunt een onderbrekingspunt toevoegen in Visual Studio Code door te klikken aan de linkerkant van het regelnummer op de regel die u wilt verbreken. Er wordt een rode cirkel weergegeven nadat het onderbrekingspunt is ingeschakeld. Als u deze wilt verwijderen, selecteert u de rode cirkel opnieuw.

schermopname van een onderbrekingspunt dat is toegevoegd in het venster van de Visual Studio Code-editor.

Als u met de rechtermuisknop klikt om een onderbrekingspunt toe te voegen, kunt u ook Voorwaardelijk onderbrekingspunt toevoegenselecteren. Met dit speciale onderbrekingspunt kunt u een voorwaarde invoeren om de uitvoering te onderbreken. Dit onderbrekingspunt is alleen actief wanneer aan de opgegeven voorwaarde wordt voldaan. U kunt een bestaand onderbrekingspunt ook wijzigen door er met de rechtermuisknop op te klikken en Onderbrekingspunt bewerken te selecteren.

schermopname van het instellen van een voorwaardelijk onderbrekingspunt in Visual Studio Code.

Overzicht van visual Studio Code-foutopsporingsprogramma

Nadat u uw onderbrekingspunten hebt ingesteld en uw app hebt gestart, worden nieuwe informatievensters en besturingselementen weergegeven op het scherm.

schermopname van het overzicht van het foutopsporingsprogramma van Visual Studio Code.

  1. Startcontroles voor debugger
  2. Status van variabelen
  3. Status van bekeken variabelen
  4. Huidige aanroepstack
  5. Onderbrekingspunten
  6. Uitvoeringscontroles
  7. Huidige uitvoeringsstap
  8. Foutopsporingsconsole

Startcontroles voor debugger

Boven aan de zijbalk vindt u de besturingselementen voor het starten:

schermopname van debugbesturingselementen in Visual Studio Code.

  1. Start met debuggen.
  2. Selecteer de actieve startconfiguratie.
  3. Bewerk het launch.json-bestand. Maak het als dat nodig is.
  4. Open de terminal voor foutopsporing.

De status van uw variabelen weergeven en bewerken

Wanneer u de oorzaak van een programmafout analyseert, bekijkt u de status van uw variabelen om te zoeken naar onverwachte wijzigingen. U kunt hiervoor het deelvenster Variabelen gebruiken.

Uw variabelen worden geordend op toepassingsgebied:

  • De lokale variabelen zijn toegankelijk in de huidige scope, meestal de huidige functie.
  • globale variabelen zijn overal in uw programma toegankelijk. Systeemobjecten uit de JavaScript-runtime zijn ook opgenomen, dus wees niet verbaasd als u daar veel dingen ziet.
  • Closurevariabelen zijn toegankelijk vanuit de huidige closure, als ze bestaan. Een sluiting combineert het lokale bereik van een functie met het bereik van de buitenste functie waartoe deze behoort.

U kunt scopes en variabelen uitvouwen door op de pijl te klikken. Wanneer u objecten uitvouwt, ziet u alle eigenschappen die in het object zijn gedefinieerd.

Het is mogelijk om de waarde van een variabele direct te wijzigen door te dubbelklikken op de variabele.

Door de muisaanwijzer boven een functieparameter of een variabele rechtstreeks in het editorvenster te bewegen, kunt u ook de waarde ervan bekijken.

Screenshot van zweven over variabele tijdens foutopsporing.

Variabelen bekijken

Het kan vervelend zijn om te zoeken naar een variabelestatus telkens wanneer u deze wilt bijhouden in de tijd of verschillende functies. Dat is waar het Watch paneel handig is.

U kunt de knop Plus selecteren om een variabelenaam of een expressie in te voeren die u wilt bekijken. Als alternatief kunt u met de rechtermuisknop op een variabele klikken in het deelvenster Variabelen en Toevoegen selecteren omte bekijken.

Alle expressies in het bewakingspaneel worden automatisch geüpdatet wanneer uw code wordt uitgevoerd.

Aanroepstapel

Telkens wanneer uw programma een functie invoert, wordt er een vermelding toegevoegd aan de aanroepstack. Wanneer uw toepassing complex wordt en u meerdere keren functies hebt aangeroepen binnen functies, vertegenwoordigt de aanroepstack het spoor van functie-aanroepen.

Het is handig om de bron van een uitzondering te vinden. Als uw programma onverwacht vastloopt, ziet u vaak iets in de console, zoals in het volgende voorbeeld:

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

De groep at [...] regels onder het foutbericht wordt een stack tracegenoemd. De stacktracering geeft de naam en oorsprong van elke functie die is aangeroepen voordat deze eindigt met de uitzondering. Het kan een beetje moeilijk te ontcijferen zijn, omdat het ook interne functies van de .NET-runtime bevat.

Dat is waar de Visual Studio Code Call stack paneel handig is. Hiermee worden ongewenste informatie gefilterd om u standaard alleen de relevante functies uit uw eigen code weer te geven. Vervolgens kunt u deze aanroepstack afwikkelen om erachter te komen waar de uitzondering vandaan komt.

Deelvenster Onderbrekingspunten

In het deelvenster Onderbrekingspunten kunt u alle onderbrekingspunten zien en in-/uitschakelen die u in uw code hebt geplaatst. U kunt ook opties in- of uitschakelen om te breken bij onderschepte of onopvallende uitzonderingen. U kunt het Breakpoints deelvenster gebruiken om de status van uw programma te onderzoeken en de bron van een uitzondering te traceren met behulp van de aanroepstack wanneer er een plaatsvindt.

Uitvoering beheren

U kunt de uitvoeringsstroom van uw programma beheren met behulp van deze besturingselementen.

Schermafbeelding van de uitvoeringsbesturingselementen van de debugger in Visual Studio Code.

Van links naar rechts zijn de besturingselementen:

  • de uitvoering voortzetten of onderbreken: als de uitvoering is onderbroken, wordt de uitvoering voortgezet totdat het volgende onderbrekingspunt wordt bereikt. Als uw programma wordt uitgevoerd, schakelt de knop over naar een pauzeknop die u kunt gebruiken om de uitvoering te onderbreken.
  • Stap over: voert de volgende code-instructie uit in de huidige context.
  • Stap in: zoals Stap over, maar als de volgende instructie een functieoproep is, gaat u verder met de eerste code-instructie van deze functie (hetzelfde als de opdracht step).
  • Stap uit: als u zich in een functie bevindt, voert u de resterende code van deze functie uit en gaat u terug naar de instructie na de initiële functieaanroep (hetzelfde als de opdracht out).
  • Startopnieuw op: start het programma opnieuw vanaf het begin.
  • stop: beëindig de uitvoering en sluit het foutopsporingsprogramma af.

De foutopsporingsconsole gebruiken

U kunt de console voor foutopsporing weergeven of verbergen door Ctrl+Shift+Y- voor Windows en Linux te selecteren. Selecteer Cmd+Shift+Y- voor Mac. U kunt de console voor foutopsporing gebruiken om uw toepassingsconsolelogboeken te visualiseren. U kunt deze ook gebruiken om expressies te evalueren of code uit te voeren in de huidige uitvoeringsinhoud, zoals opdrachten of namen van variabelen in het ingebouwde .NET-foutopsporingsprogramma.

U kunt een .NET-expressie invoeren in het invoerveld onderaan de console voor foutopsporing en vervolgens Enter selecteren om deze te evalueren. Het resultaat wordt rechtstreeks in de console weergegeven.

schermopname van de console voor foutopsporing van Visual Studio Code.

Met behulp van de foutopsporingsconsole kunt u snel een variabelewaarde controleren, een functie met verschillende waarden testen of de huidige status wijzigen.

Notitie

Hoewel de foutopsporingsconsole erg nuttig is voor het uitvoeren en evalueren van .NET-code, kan het een beetje verwarrend zijn wanneer u een .NET Console-toepassing probeert uit te voeren of fouten op te sporen omdat de console voor foutopsporing geen terminalinvoer accepteert voor een actief programma.

Als u terminalinvoer wilt verwerken tijdens foutopsporing, kunt u de geïntegreerde terminal (een van de Visual Studio Code-vensters) of een externe terminal gebruiken. Voor deze zelfstudie gebruikt u de geïntegreerde terminal.

  1. Open .vscode/launch.json.

  2. Wijzig de instelling voor console in integratedTerminal van:

    "console": "internalConsole",
    

    Aan:

    "console": "integratedTerminal",
    
  3. Sla uw wijzigingen op.

In de volgende les leert u hoe u het foutopsporingsprogramma kunt gebruiken om de fout op te lossen in de Fibonacci-code die we eerder hebben gezien.