Delen via


Handleiding: Fouten opsporen in C#-code met behulp van Visual Studio

In dit artikel worden de functies van het Visual Studio-foutopsporingsprogramma in een stapsgewijze procedure geïntroduceerd. Als u een weergave op een hoger niveau van de functies van het foutopsporingsprogramma wilt, raadpleegt u Eerst het foutopsporingsprogramma. Wanneer u uw app debugt, betekent dit meestal dat u uw toepassing uitvoert met een aangesloten debugger. Wanneer u deze taak uitvoert, biedt het foutopsporingsprogramma veel manieren om te zien wat uw code doet terwijl deze wordt uitgevoerd. U kunt uw code doorlopen en de waarden bekijken die zijn opgeslagen in variabelen, u kunt horloges instellen op variabelen om te zien wanneer waarden veranderen, u kunt het uitvoeringspad van uw code bekijken, zien of er een vertakking van code wordt uitgevoerd, enzovoort. Als deze oefening de eerste keer is dat u code probeert op te sporen, kunt u Foutopsporing lezen voor absolute beginners voordat u dit artikel doorloopt.

Hoewel de demo-app C# is, zijn de meeste functies van toepassing op C++, Visual Basic, F#, Python, JavaScript en andere talen die worden ondersteund door Visual Studio (F# biedt geen ondersteuning voor Edit-and-Continue. F# en JavaScript bieden geen ondersteuning voor het venster Autos). De schermopnamen bevinden zich in C#.

In deze zelfstudie gaat u het volgende doen:

  • Start het foutopsporingsprogramma en druk op onderbrekingspunten.
  • Meer informatie over opdrachten voor het doorlopen van code in het foutopsporingsprogramma
  • Variabelen inspecteren in gegevenstips en debuggervensters
  • De aanroepstack onderzoeken

Voorwaarden

Visual Studio 2022 moet zijn geïnstalleerd en de .NET-desktopontwikkeling workload.

Als u Visual Studio nog niet hebt geïnstalleerd, gaat u naar de Visual Studio-downloadpagina pagina om deze gratis te installeren.

Als u Visual Studio al hebt maar de .NET-desktopontwikkeling workload niet is geïnstalleerd, gaat u naar Tools>Get Tools and Features..., waarmee het Installatieprogramma van Visual Studio wordt gestart. Kies in het Visual Studio-installatieprogramma de .NET-desktopontwikkeling workload en kies vervolgens Wijzigen.

Een project maken

Eerst maakt u een .NET Core-consoletoepassingsproject. Het projecttype wordt geleverd met alle sjabloonbestanden die u nodig hebt, voordat u iets hebt toegevoegd.

  1. Open Visual Studio. Als het startvenster niet is geopend, selecteert u Bestand>Startvenster.

  2. Selecteer in het startvenster Een nieuw project maken.

  1. In het venster Een nieuw project maken, voer console in het zoekvak in. Kies vervolgens C# in de lijst Taal en kies vervolgens Windows in de lijst Platform.

    Nadat u de taal- en platformfilters hebt toegepast, kiest u de sjabloon Console-app en selecteert u vervolgens Volgende.

    Schermopname van de sjabloon Consoletoepassing in het venster Een nieuw project maken van Visual Studio 2022.

    Notitie

    Als u de sjabloon Console-app niet ziet, kunt u deze installeren vanuit het Een nieuw project venster maken. In het bericht 'Niet vinden wat u zoekt?' selecteert u de koppeling 'Meer hulpprogramma's en functies installeren'. Kies vervolgens in het installatieprogramma van Visual Studio de .NET-desktopontwikkeling workload.

  2. Voer in het venster Uw nieuwe project configurerenGetStartedDebugging- in het vak Projectnaam in. Selecteer vervolgens Volgende.

  3. Controleer in het venster Aanvullende informatie of .NET 8.0 is geselecteerd in de vervolgkeuzelijst Framework en selecteer vervolgens Maken.

Visual Studio opent uw nieuwe project.

De toepassing maken

Vervang in Program.csalle standaardcode door de volgende code:

using System;

class ArrayExample
{
   static void Main()
   {
      char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
      string name = "";
      int[] a = new int[10];
      for (int i = 0; i < letters.Length; i++)
      {
         name += letters[i];
         a[i] = i + 1;
         SendMessage(name, a[i]);
      }
      Console.ReadKey();
   }

   static void SendMessage(string name, int msg)
   {
      Console.WriteLine("Hello, " + name + "! Count to " + msg);
   }
}

Start het foutopsporingsprogramma.

Meestal gebruiken we hier sneltoetsen, omdat het een snelle manier is om foutopsporingsprogramma-opdrachten uit te voeren. Gelijkwaardige opdrachten, zoals werkbalk- of menuopdrachten, worden ook vermeld.

  1. Als u het foutopsporingsprogramma wilt starten, selecteert u F5of kiest u de knop Foutopsporingsdoel op de werkbalk Standaard, of kiest u de knop Foutopsporing starten op de werkbalk Foutopsporing of kiest u Foutopsporing>Start Debugging op de menubalk.

    Schermopname van de knop Doel voor foutopsporing in de standaardwerkbalk van Visual Studio 2022.

    F5 start de app met het aan het app-proces gekoppeld foutopsporingsprogramma. Omdat we niets bijzonders hebben gedaan om de code te controleren, draait de app tot het einde en zie je de console-uitvoer.

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    
  2. Als u het foutopsporingsprogramma wilt stoppen, selecteert u Shift+F5of kiest u de knop Foutopsporing stoppen op de werkbalk Foutopsporing of kiest u Foutopsporing stoppen> in de menubalk.

    Schermopname van de knop Foutopsporing stoppen in de werkbalk Foutopsporing van Visual Studio 2022.

  3. Selecteer een willekeurige sleutel in het consolevenster om het consolevenster te sluiten.

Een onderbrekingspunt instellen en het foutopsporingsprogramma starten

  1. Stel een onderbrekingspunt in in de for-lus van de Main-functie door te klikken op de volgende regel code in de linkermarge.

    name += letters[i];

    Er wordt een rode cirkel weergegeven waar u het onderbrekingspunt instelt.

    Schermopname van een onderbrekingspunt in Visual Studio 2022.

    Onderbrekingspunten zijn een essentieel onderdeel van betrouwbare foutopsporing. U kunt onderbrekingspunten instellen waar u wilt dat Visual Studio de actieve code onderbreekt, zodat u de waarden van variabelen of het gedrag van het geheugen kunt bekijken of weet of er een vertakking van code wordt uitgevoerd.

  2. Als u foutopsporing wilt starten, selecteert u F5of kiest u de knop Foutopsporingsdoel in de standaardwerkbalk of kiest u de knop Foutopsporing starten op de werkbalk Foutopsporing of kiest u Foutopsporing>Start Debugging op de menubalk. De app start en de debugger gaat naar de coderegel waar je het onderbrekingspunt hebt ingesteld.

    schermopname van een onderbrekingspunt in de code-editor van Visual Studio 2022, waarbij de uitvoering van code is onderbroken op het onderbrekingspunt.

    De gele pijl wijst naar de verklaring waarop het foutopsporingsprogramma is onderbroken. De uitvoering van de app wordt op hetzelfde punt onderbroken, waarbij de instructie nog niet is uitgevoerd.

    Wanneer de app niet wordt uitgevoerd, start F5 het foutopsporingsprogramma, waarmee de app wordt uitgevoerd totdat het eerste onderbrekingspunt is bereikt. Als de app op een onderbrekingspunt is onderbroken, blijft F5- de app uitvoeren totdat het volgende onderbrekingspunt is bereikt.

    Onderbrekingspunten zijn een handige functie wanneer u de regel of sectie met code kent die u in detail wilt onderzoeken. Zie Onderbrekingspunten gebruikenvoor meer informatie over de verschillende typen onderbrekingspunten die u kunt instellen, zoals voorwaardelijke onderbrekingspunten.

  1. Terwijl de uitvoering van code is onderbroken op de instructie name += letters[i], beweegt u de muisaanwijzer over de letters variabele om een gegevenstip weer te geven met de matrixgrootte en het elementtype, char[10].

    Notitie

    Een van de handigste functies van het foutopsporingsprogramma is de mogelijkheid om een variabele te inspecteren. Wanneer u een probleem probeert op te sporen, probeert u vaak te achterhalen of variabelen waarden hebben die u op een bepaald moment verwacht. Gegevenstips bekijken is een goede manier om dat te controleren.

  2. Vouw de letters variabele uit om alle matrixelementen en de bijbehorende waarden weer te geven.

    Schermopname van een debuggertip in Visual Studio 2022 waarin de elementwaarden voor het 'letters'-arrayvariabele worden weergegeven.

  3. Beweeg de muisaanwijzer over de name variabele om de huidige waarde te zien. Dit is een lege tekenreeks.

  4. Als u het foutopsporingsprogramma naar de volgende instructie wilt verplaatsen, selecteert u F10of kiest u de knop Stap over in de werkbalk Foutopsporing of kiest u Foutopsporing>Stap over in de menubalk. Selecteer F10 nog twee keer om de SendMessage methode aanroep voorbij te gaan.

    F10 voert de debugger verder uit zonder de functie of methoden in te gaan, terwijl de code nog steeds wordt uitgevoerd. Op deze manier hebben we foutopsporing van de code in de SendMessage-methode overgeslagen, waarin we momenteel niet geïnteresseerd zijn.

  5. Als u de for lus een paar keer wilt herhalen, selecteert u F10 herhaaldelijk. Houd tijdens elke lusiteratie bij het onderbrekingspunt pauze en beweeg vervolgens de muis over de variabele name om de waarde in de data tip te controleren.

    Schermopname van een tip voor foutopsporingsprogrammagegevens in Visual Studio 2022 waarin de tekenreekswaarde voor de variabele 'naam' wordt weergegeven.

    De waarde van de variabele verandert met elke iteratie van de for lus, met waarden van f, fr, freenzovoort. Als u het foutopsporingsprogramma sneller wilt doorlopen, selecteert u in plaats daarvan F5, waardoor het naar uw onderbrekingspunt gaat in plaats van de volgende instructie.

  6. Terwijl de uitvoering van code is onderbroken in de for lus van de methode Main, selecteert u F11of kiest u de knop Stap in op de werkbalk Foutopsporing of kiest u Foutopsporing>Stap in in de menubalk totdat u bij de aanroep SendMessage methode bent.

    Het foutopsporingsprogramma moet worden gepauzeerd bij deze coderegel.

    SendMessage(name, a[i]);

  7. Als u de methode SendMessage wilt doorlopen, selecteert u F11- opnieuw.

    De gele aanwijzer gaat naar de methode SendMessage.

    Schermopname met de uitvoeringsaanwijzer van het foutopsporingsprogramma binnen de methode SendMessage.

    F11 helpt u de uitvoeringsstroom van uw code uitgebreider te onderzoeken. Selecteer F11om binnen een methode te stappen vanuit een methodeaanroep. Standaard slaat de debugger over het betreden van niet-gebruikersmethoden. Zie Just My Codevoor meer informatie over het opsporen van fouten in niet-gebruikerscode.

    Zodra u klaar bent met het opsporen van fouten in de SendMessage methode, bent u klaar om terug te keren naar de for lus van de main methode.

  8. Als u de methode SendMessage wilt verlaten, selecteert u Shift+F11of kiest u de knop Uitstappen op de werkbalk Foutopsporing of kiest u Foutopsporing> uitstappen in de menubalk.

    Step Out hervat de uitvoering van de app en gaat door met het foutopsporingsprogramma totdat de huidige methode of functie is voltooid.

    U ziet de gele aanwijzer weer in de for-lus van de methode Main, gepauzeerd bij de aanroep van de methode SendMessage. Zie Navigate-code in het foutopsporingsprogrammavoor meer informatie over verschillende manieren om door uw code te navigeren.

  1. Selecteer F5- om opnieuw naar het onderbrekingspunt te gaan.

  2. Beweeg in de code-editor de aanroep van de methode Console.WriteLine in de methode SendMessage totdat de knop Uitvoeren om op te klikken wordt weergegeven. In de knopinfo wordt 'Uitvoering tot hier uitvoeren' weergegeven.

    Schermafbeelding van de Run to Click-knop in Visual Studio 2022.

  3. Kies de knop Uitvoeren om op te klikken. U kunt ook met uw cursor bij de Console.WriteLine-instructie Ctrl+F10selecteren. Of klik met de rechtermuisknop op de aanroep van de methode Console.WriteLine en kies Uitvoeren naar cursor in het contextmenu.

    De debugger gaat verder met de aanroep van de methode Console.WriteLine.

    Het gebruik van de knop Run to Click is vergelijkbaar met het instellen van een tijdelijk onderbrekingspunt en is handig om snel door een zichtbaar gebied van uw app-code in een geopend bestand te navigeren.

Uw app snel opnieuw opstarten

Als u de app opnieuw wilt uitvoeren vanaf het begin in het foutopsporingsprogramma, selecteert u Ctrl+Shift+F5-of kiest u de knop Opnieuw opstarten op de werkbalk Foutopsporing of kiest u Foutopsporing>Opnieuw opstarten in de menubalk.

Schermafbeelding van de knop Opnieuw opstarten op de werkbalk Foutopsporing van Visual Studio 2022.

Herstart stopt het foutopsporingsprogramma en start het vervolgens opnieuw, in één stap. Wanneer het foutopsporingsprogramma opnieuw wordt gestart, wordt het uitgevoerd tot aan het eerste onderbrekingspunt, dat het onderbrekingspunt is dat u eerder in de for lus hebt ingesteld, en pauzeert vervolgens.

Variabelen inspecteren met de vensters Auto's en Locals

De Autos en Locals vensters geven variabele waarden weer terwijl u foutopsporing uitvoert. De vensters zijn alleen beschikbaar tijdens een foutopsporingssessie. In het venster Autos worden variabelen weergegeven die worden gebruikt op de huidige regel waarop het foutopsporingsprogramma zich bevindt en de voorgaande regel. In het venster Locals worden variabelen weergegeven die zijn gedefinieerd in het lokale bereik. Dit is meestal de huidige functie of methode.

  1. Terwijl het foutopsporingsprogramma is onderbroken, bekijkt u het venster Autos onder aan de code-editor.

    Als het venster Autos is gesloten, selecteert u Ctrl+D, Aof kiest u Debuggen>Windows>Autos in de menubalk.

  2. Wanneer het foutopsporingsprogramma nog steeds is onderbroken, bekijkt u het venster Locals op een tabblad naast het venster Autos.

    Als het venster Locals is gesloten, selecteert u Ctrl+D, Lof kiest u Debug>Windows>Locals.

  3. Vouw in het venster Locals de variabele letters uit om de matrixelementen en de bijbehorende waarden te bekijken.

    Schermopname van het venster Locals in Visual Studio 2022, met de matrixvariabele letters uitgevouwen.

Zie voor meer informatie over de vensters Autos en Locals, Inspect variabelen in de vensters Auto's en Locals.

Een horloge instellen

U kunt een variabele of een expressie opgeven die u in de gaten wilt houden terwijl u code doorloopt. U voegt deze toe aan het venster Watch.

  1. Terwijl het foutopsporingsprogramma is onderbroken, klikt u met de rechtermuisknop op de variabele name en kiest u Controle toevoegen.

    Het venster Watch wordt standaard onder aan de code-editor geopend.

  2. Nu u een controle hebt ingesteld voor de name variabele, doorloopt u de code om de waarde van de variabele name te bekijken met elke herhaling van de for lus.

    In tegenstelling tot de andere variabelevensters worden in het venster Watch altijd de variabelen weergegeven die u bekijkt. Variabelen die buiten het bereik vallen, worden weergegeven als niet beschikbaar.

Voor meer informatie over het venster Watch, zie Watch-variabelen met Watch vensters.

De aanroepstack onderzoeken

De Call Stack kan u helpen de uitvoeringsstroom van uw app te begrijpen door de volgorde weer te geven waarin methoden en functies worden aangeroepen.

  1. Terwijl de debugger gepauzeerd is in de for-lus, bekijkt u het -aanroepstackvenster, dat standaard in het rechtsonder deelvenster van de code-editor wordt geopend.

    Als het venster Aanroepstapel is gesloten, selecteert u Ctrl+D, Cof kiest u Debug>Windows>Aanroepstapel in de menubalk.

    In het venster Aanroepstapel ziet u de gele aanwijzer bij de huidige Main methode.

  2. Selecteer enkele keren F11 totdat je ziet dat het foutopsporingsprogramma in de methode SendMessage pauzeert.

    In de bovenste regel van het venster Aanroepstack ziet u de huidige functie. Dit is de SendMessage methode. Op de tweede regel ziet u dat de methode SendMessage is aangeroepen vanuit de Main methode.

    Schermopname van het venster Oproepstack in Visual Studio 2022.

    Notitie

    Het venster Aanroepstack is vergelijkbaar met het Debug-perspectief in sommige IDE's, zoals Eclipse.

    In het venster Call Stack kunt u dubbelklikken op een coderegel om naar die broncode te gaan, en daarmee wordt de huidige scope gewijzigd die door de debugger wordt gecontroleerd. Met deze actie gaat de debugger niet verder.

    U kunt ook met de rechtermuisknop op menu's klikken in het venster Oproepstack om andere dingen te doen. U kunt bijvoorbeeld onderbrekingspunten invoegen in opgegeven functies, het foutopsporingsprogramma verder laten gaan met behulp van Uitvoeren naar Cursorof naar de broncode gaan.

Zie How to: Examine the Call Stackvoor meer informatie over de Call Stack.

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u het foutopsporingsprogramma start, code doorloopt en variabelen inspecteert. Mogelijk wilt u de functies van het foutopsporingsprogramma op hoog niveau bekijken, samen met koppelingen naar meer informatie.