Delen via


Logboekgegevens in het uitvoervenster met behulp van tracepoints in Visual Studio

Met tracepoints kunt u gegevens onder configureerbare omstandigheden vastleggen in het uitvoervenster zonder de code te wijzigen of te stoppen. Deze functie wordt ondersteund voor zowel beheerde talen (C#, Visual Basic, F#) als systeemeigen code, evenals talen zoals JavaScript en Python.

Opmerking

Zie Berichten verzenden naar het uitvoervenster voor informatie over logboekregistratie via programmacode met behulp van .NET-API's.

Laten we een voorbeeld nemen

Het volgende voorbeeldprogramma is een eenvoudige for lus met een tellervariabele die elke keer wordt verhoogd wanneer de lus een andere iteratie uitvoert.

Schermopname van een voorbeeldtellerprogramma.

Het volgende voorbeeldprogramma is een eenvoudige for lus met een tellervariabele die elke keer wordt verhoogd wanneer de lus een andere iteratie uitvoert.


using System.Diagnostics;

namespace Tracepoints
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int counter = 0;
            for (int i=0; i<=10; i++)
            {
                counter +=1;
            }
        }
    }
}

Traceringspunten instellen in broncode

U kunt traceringen instellen door een uitvoertekenreeks op te geven onder het selectievakje Actie in het venster Instellingen voor onderbrekingspunten .

  1. Als u een traceringspunt wilt initialiseren, klikt u eerst op de rugmarge links van het regelnummer waar u het tracepoint wilt instellen.

    Schermopname van de initialisatie van onderbrekingspunten in de voorbeeldcode.

  2. Beweeg de muisaanwijzer over de rode cirkel en klik vervolgens op het tandwielpictogram.

  3. Met deze actie wordt het venster Instellingen voor onderbrekingspunten geopend.

    Schermopname van het onderbrekingspuntvenster.

  4. Schakel het selectievakje Actie in.

    Schermopname van het onderbrekingspuntvenster met Het selectievakje Acties ingeschakeld.

    U ziet hoe de rode cirkel verandert in een diamant die aangeeft dat u bent overgeschakeld van een onderbrekingspunt naar het traceringspunt.

  5. Voer het bericht in dat u wilt aanmelden bij het tekstvak Een bericht weergeven in het tekstvak Uitvoervenster (zie de latere secties in dit artikel voor meer informatie).

    Uw traceringspunt is nu ingesteld. Druk op de knop Sluiten als u alleen informatie wilt vastleggen in het uitvoervenster.

  6. Als u voorwaarden wilt toevoegen die bepalen of uw bericht wordt weergegeven, schakelt u het selectievakje Voorwaarden in.

    Schermopname van het onderbrekingspuntvenster met Het selectievakje Voorwaarden ingeschakeld.

    U hebt drie opties voor voorwaarden: Voorwaardelijke expressie, Filter en Hit Count.

U kunt traceringen instellen door een uitvoertekenreeks op te geven onder het selectievakje Actie in het venster Instellingen voor onderbrekingspunten .

  1. Als u een traceringspunt wilt initialiseren, klikt u eerst op de rugmarge links van het regelnummer waar u het tracepoint wilt instellen.

    Schermopname van de initialisatie van onderbrekingspunten in de voorbeeldcode.

  2. Beweeg de muisaanwijzer over de rode cirkel en klik op het tandwielpictogram om het venster Instellingen voor onderbrekingspunt te openen.

    Schermopname van het onderbrekingspuntvenster.

  3. Schakel het selectievakje Actie in.

    Schermopname van het onderbrekingspuntvenster met Het selectievakje Acties ingeschakeld.

    U ziet hoe de rode cirkel verandert in een diamant die aangeeft dat u bent overgeschakeld van een onderbrekingspunt naar het traceringspunt.

  4. Voer het bericht in dat u wilt aanmelden bij het tekstvak Een bericht weergeven in het tekstvak Uitvoervenster (zie de latere secties in dit artikel voor meer informatie).

    Uw traceringspunt is nu ingesteld. Druk op de knop Sluiten als u alleen informatie wilt vastleggen in het uitvoervenster.

  5. Als u voorwaarden wilt toevoegen die bepalen of uw bericht wordt weergegeven, schakelt u het selectievakje Voorwaarden in.

    Schermopname van het onderbrekingspuntvenster met Het selectievakje Voorwaarden ingeschakeld.

    U hebt drie opties voor voorwaarden: Voorwaardelijke expressie, Filter en Hit Count.

Menu Acties

In dit menu kunt u een bericht vastleggen in het venster Uitvoer. Typ de tekenreeksen die u wilt uitvoeren in het berichtvak (geen aanhalingstekens nodig). Als u waarden van variabelen wilt weergeven, moet u deze tussen accolades zetten.

Als u bijvoorbeeld de waarde van de counter variabele in de uitvoerconsole wilt weergeven, typt u {counter} in het berichttekstvak.

Schermopname van uitvoerbericht van teller.

Als u op Sluiten klikt en vervolgens fouten opssporing in het programma (F5), ziet u de volgende uitvoer in het venster Uitvoer.

Schermopname van het bericht Acties in het uitvoervenster.

U kunt ook speciale trefwoorden gebruiken om specifiekere informatie weer te geven. Voer het trefwoord precies in zoals hieronder wordt weergegeven (gebruik een '$' voor elk trefwoord en alle hoofdletters voor het trefwoord zelf).

Keyword Wat wordt weergegeven
$ADDRESS Huidige instructie
$CALLER Naam van functie aanroepen
$CALLSTACK Aanroepstack
$FUNCTION Naam van huidige functie
$PID proces-ID
$PNAME Procesnaam
$TID Thread-id
$TNAME Threadnaam
$TICK Aantal tikken (van Windows GetTickCount)

In dit menu kunt u een bericht vastleggen in het venster Uitvoer. Typ de tekenreeksen die u wilt uitvoeren in het berichtvak (geen aanhalingstekens nodig). Als u waarden van variabelen wilt weergeven, moet u deze tussen accolades zetten.

Als u bijvoorbeeld de waarde van de counter variabele in de uitvoerconsole wilt weergeven, typt {counter} u het tekstvak voor het bericht.

Schermopname van uitvoerbericht van teller.

Als u op Sluiten klikt en vervolgens fouten opssporing in het programma (F5), ziet u de volgende uitvoer in het venster Uitvoer.

Schermopname van het bericht Acties in het uitvoervenster.

U kunt ook speciale trefwoorden gebruiken om specifiekere informatie weer te geven. Voer het trefwoord precies in zoals hieronder wordt weergegeven (gebruik een '$' voor elk trefwoord en alle hoofdletters voor het trefwoord zelf).

Keyword Wat wordt weergegeven
$ADDRESS Huidige instructie
$CALLER Naam van functie aanroepen
$CALLSTACK Aanroepstack
$FUNCTION Naam van huidige functie
$PID proces-ID
$PNAME Procesnaam
$TID Thread-id
$TNAME Threadnaam
$TICK Aantal tikken (van Windows GetTickCount)

Menu Voorwaarden

Met voorwaarden kunt u uw uitvoerberichten filteren, zodat ze alleen onder bepaalde scenario's worden weergegeven. Er zijn drie soorten voorwaarden beschikbaar voor u.

Voorwaardelijke expressie

Voor een voorwaardelijke expressie wordt een uitvoerbericht alleen weergegeven wanneer aan bepaalde voorwaarden wordt voldaan.

Voor voorwaardelijke expressies kunt u het traceringspunt instellen om een bericht uit te voeren wanneer een bepaalde voorwaarde waar is of wanneer deze is gewijzigd. Als u bijvoorbeeld alleen de waarde van de teller wilt weergeven tijdens zelfs iteraties van de for lus, kunt u de optie Is waar selecteren en vervolgens in het tekstvak van het bericht typen i%2 == 0 .

Schermopname van voorwaardelijke expressie is waar.

Als u de waarde van de teller wilt afdrukken wanneer de herhaling van de for lus verandert, selecteert u de optie Wanneer gewijzigd en typt i u het tekstvak van het bericht.

Schermopname die wordt weergegeven wanneer voorwaardelijke expressie is gewijzigd.

Het gedrag van de optie Wanneer gewijzigd is anders voor verschillende programmeertalen.

  • Voor systeemeigen code beschouwt het foutopsporingsprogramma niet de eerste evaluatie van de voorwaarde als een wijziging, dus raakt het tracepoint niet bij de eerste evaluatie.
  • Voor beheerde code raakt het foutopsporingsprogramma het traceringspunt op de eerste evaluatie nadat De wijziging is geselecteerd.

U kunt ook de voorwaarde instellen wanneer het traceringspunt kan worden ingeschakeld door een onderbrekingspunt in te voegen in een bepaald gedeelte van de code en het selectievakje Alleen inschakelen wanneer het volgende onderbrekingspunt wordt bereikt: optie in het menu Instellingen voor onderbrekingspunten . U kunt elk onderbrekingspunt kiezen in de lijst met opties.

Schermopname van inschakelen wanneer een onderbrekingspunt is ingeschakeld.

Zie Expressies in het foutopsporingsprogramma voor een uitgebreider overzicht van geldige expressies die u kunt gebruiken tijdens het instellen van voorwaarden.

Hulp bij AI krijgen

Als u Copilot hebt, kunt u AI-hulp krijgen terwijl u een tracepoint maakt. Copilot geeft u suggesties voor voorwaardelijke onderbrekingspunten en traceringspunten die specifiek zijn voor uw code.

Schermopname van Copilot die werkt aan suggesties voor voorwaardelijk onderbrekingspunt.

Zie Fouten opsporen met Copilot voor meer informatie.

Voor een voorwaardelijke expressie wordt een uitvoerbericht alleen weergegeven wanneer aan bepaalde voorwaarden wordt voldaan.

Voor voorwaardelijke expressies kunt u het traceringspunt instellen om een bericht uit te voeren wanneer een bepaalde voorwaarde waar is of wanneer deze is gewijzigd. Als u bijvoorbeeld alleen de waarde van de teller wilt weergeven tijdens zelfs iteraties van de for lus, kunt u de optie Is waar selecteren en vervolgens in het tekstvak van het bericht typen i%2 == 0 .

Schermopname van voorwaardelijke expressie is waar.

Als u de waarde van de teller wilt afdrukken wanneer de herhaling van de for lus verandert, selecteert u de optie Wanneer gewijzigd en typt i u het tekstvak van het bericht.

Schermopname die wordt weergegeven wanneer voorwaardelijke expressie is gewijzigd.

Het gedrag van de optie Wanneer gewijzigd is anders voor verschillende programmeertalen.

  • Voor systeemeigen code beschouwt het foutopsporingsprogramma niet de eerste evaluatie van de voorwaarde als een wijziging, dus raakt het tracepoint niet bij de eerste evaluatie.
  • Voor beheerde code raakt het foutopsporingsprogramma het traceringspunt op de eerste evaluatie nadat De wijziging is geselecteerd.

Zie Expressies in het foutopsporingsprogramma voor een uitgebreider overzicht van geldige expressies die u kunt gebruiken tijdens het instellen van voorwaarden.

Aantal treffers

Met een voorwaarde voor het aantal treffers kunt u alleen uitvoer verzenden nadat de coderegel waarvoor het tracepoint is ingesteld, een opgegeven aantal keren heeft uitgevoerd.

Voor het aantal treffers kunt u ervoor kiezen om een bericht uit te voeren wanneer de coderegel waar het tracepoint is ingesteld, een bepaald aantal keren is uitgevoerd. Op basis van de vereiste kan deze gelijk zijn aan of een veelvoud zijn of groter zijn dan of gelijk zijn aan de opgegeven waarde voor het aantal treffers. Kies de optie die het beste bij uw behoeften past en typ een geheel getal in het veld (bijvoorbeeld 5) dat de gewenste iteratie aangeeft.

Schermopname van het aantal voorwaardelijke expressietreffers.

Met een voorwaarde voor het aantal treffers kunt u alleen uitvoer verzenden nadat de coderegel waarvoor het tracepoint is ingesteld, een opgegeven aantal keren heeft uitgevoerd.

Voor het aantal treffers kunt u ervoor kiezen om een bericht uit te voeren wanneer de coderegel waar het tracepoint is ingesteld, een bepaald aantal keren is uitgevoerd. Op basis van de vereiste kan deze gelijk zijn aan of een veelvoud zijn of groter zijn dan of gelijk zijn aan de opgegeven waarde voor het aantal treffers. Kies de optie die het beste bij uw behoeften past en typ een geheel getal in het veld (bijvoorbeeld 5) dat de gewenste iteratie aangeeft.

Schermopname van het aantal voorwaardelijke expressietreffers.

U kunt ook het onderbrekingspunt bij de eerste treffer verwijderen door het selectievakje Onderbrekingspunt verwijderen in te schakelen zodra dit is bereikt.

Schermopname van onderbrekingspunt verwijderen bij eerste treffer.

Filter

Geef voor een filtervoorwaarde op voor welke apparaten, processen of threads uitvoer wordt weergegeven.

Schermopname van het filter voor voorwaardelijke expressie.

Lijst met filterexpressies:

  • MachineName = "name"
  • ProcessId = waarde
  • ProcessName = "name"
  • ThreadId = waarde
  • ThreadName = "name"

Plaats tekenreeksen (zoals namen) tussen dubbele aanhalingstekens. Waarden kunnen zonder aanhalingstekens worden ingevoerd. U kunt componenten combineren met behulp van & (AND), || (OR), ! (NOT) en haakjes.

Geef voor een filtervoorwaarde op voor welke apparaten, processen of threads uitvoer wordt weergegeven.

Schermopname van het filter voor voorwaardelijke expressie.

Lijst met filterexpressies:

  • MachineName = "name"
  • ProcessId = waarde
  • ProcessName = "name"
  • ThreadId = waarde
  • ThreadName = "name"

Plaats tekenreeksen (zoals namen) tussen dubbele aanhalingstekens. Waarden kunnen zonder aanhalingstekens worden ingevoerd. U kunt componenten combineren met behulp van & (AND), || (OR), ! (NOT) en haakjes.

Overwegingen

Tracepoints zijn bedoeld om foutopsporing een schonere en soepelere ervaring te maken. Er zijn enkele overwegingen waar u rekening mee moet houden als het gaat om het gebruik ervan.

Soms kan de waarde ervan veranderen wanneer u een eigenschap of kenmerk van een object inspecteert. Als de waarde tijdens de inspectie verandert, is dit geen bug die wordt veroorzaakt door de tracepoint-functie zelf. Als u echter traceringspunten gebruikt om objecten te inspecteren, worden deze onbedoelde wijzigingen niet vermeden.

De manier waarop expressies worden geƫvalueerd in het berichtvak Actie kan afwijken van de taal die u momenteel gebruikt voor ontwikkeling. Als u bijvoorbeeld een tekenreeks wilt uitvoeren, hoeft u een bericht niet tussen aanhalingstekens te verpakken, zelfs niet als u normaal gesproken zou gebruiken Debug.WriteLine() of console.log(). De accoladesyntaxis ({ }) voor uitvoerexpressies kunnen ook afwijken van de conventie voor het uitvoeren van waarden in uw ontwikkeltaal. (De inhoud binnen de accolades ({ }) moet echter nog steeds worden geschreven met behulp van de syntaxis van uw ontwikkeltaal.

Als u probeert fouten op te sporen in een live-toepassing en op zoek bent naar een vergelijkbare functie, raadpleegt u de functie logboekpunt in het foutopsporingsprogramma voor momentopnamen. Het foutopsporingsprogramma voor momentopnamen is een hulpprogramma dat wordt gebruikt om problemen in productietoepassingen te onderzoeken. Met logboekpunten kunt u ook berichten verzenden naar het uitvoervenster zonder broncode te hoeven wijzigen en geen invloed te hebben op uw actieve toepassing. Zie Debug live Azure-toepassing voor meer informatie.