Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u probeert een probleem op te sporen, probeert u vaak te achterhalen of variabelen de waarden opslaan die u verwacht dat ze een bepaalde app-status hebben. Enkele van de handigste functies van het foutopsporingsprogramma zijn functies waarmee u variabelen kunt inspecteren.
In dit artikel leest u hoe u variabelen inspecteert en retourwaarden weergeeft met behulp van het foutopsporingsprogramma in Visual Studio. Het foutopsporingsprogramma biedt verschillende handige manieren om deze taken uit te voeren, waaronder de volgende:
- In de code-editor kunt u tips voor gegevens en inline retourwaarden weergeven
- In foutopsporingsprogrammavensters (Auto's, Locals en Watch-vensters) kunt u variabele waarden weergeven
- In visualizers kunt u grote tekenreeksen of complexe .NET-objecten weergeven
Deze functies zijn alleen beschikbaar tijdens foutopsporing. Zie Hoe u een foutopsporingssessie start en de onderbrekingsmodus kunt ingaanvoor meer informatie.
Notitie
Als dit de eerste keer is dat u code probeert op te sporen, kunt u Foutopsporing lezen voor absolute beginners en foutopsporingstechnieken en hulpprogramma's voordat u dit artikel doorloopt.
Variabelen weergeven in de code-editor
Bij foutopsporing wilt u vaak snel de eigenschapswaarden voor objecten in de code-editor controleren en de tips voor gegevens zijn een goede manier om dit te doen.
Pauzeer in het foutopsporingsprogramma, houd de muisaanwijzer boven een object en ziet u de waarde ervan of de standaardeigenschapswaarde.
Als de variabele eigenschappen heeft, kunt u het object uitbreiden om alle eigenschappen ervan weer te geven.
Zie Gegevenswaarden weergeven in gegevenstipsvoor gedetailleerde informatie over het gebruik van gegevenstips.
Inline retourwaarden van methodeaanroepen weergeven in de code-editor
In .NET- en C++-code kunt u retourwaarden onderzoeken wanneer u een methodeaanroep over- of uitstapt. Dit kan handig zijn wanneer de retourwaarde niet wordt opgeslagen in een lokale variabele. Een methode kan worden gebruikt als parameter of als de retourwaarde van een andere methode.
Vanaf Visual Studio 2022 versie 17.12 kunt u retourwaarden van methodeaanroepen inline bekijken en niet alleen in het venster Autos.
Als Copilot is ingeschakeld, kunt u ook gerichte hulp krijgen met betrekking tot de inline retourwaarde met behulp van de knop Vraag Copilot die wordt weergegeven in de gegevenstip voor de retourwaarde.
Het foutopsporingsprogramma geeft ook inline waarden na retour weer, met de retourwaarde aan het einde van de coderegel waar deze is geretourneerd.
U kunt met de rechtermuisknop op een inline retourwaarde klikken en opties selecteren voor het type retourwaarden dat u inline wilt weergeven.
Variabelen in de gaten houden
U kunt een venster Watch gebruiken om een variabele (of een expressie) op te geven die u in de gaten wilt houden.
Klik tijdens foutopsporing met de rechtermuisknop op een object in de code-editor en kies Watch toevoegen. Er wordt een Watch-venster geopend.
In dit voorbeeld hebt u een horloge ingesteld op het object en kunt u de waarde ervan zien veranderen terwijl u door het foutopsporingsprogramma navigeert. In tegenstelling tot de andere variabelenvensters worden in de Watch-vensters altijd de variabelen weergegeven die u monitort (ze worden grijs weergegeven wanneer ze buiten scope zijn).
Zie Een horloge instellen met behulp van de Windows-Watch en QuickWatch voor gedetailleerde informatie.
Inlinewaarden weergeven
In .NET- en C++-code geeft Visual Studio het evaluatieresultaat inline weer voor het volgende: if instructies, lussen en functieparameterwaarden.
Voor een if instructie geeft Visual Studio de inlinewaarde rechts van de voorwaarde zelf weer.
Voor een lusinstructie wordt de inlinewaarde als volgt weergegeven.
Voor functieparameters wordt de inline waarde ook rechts weergegeven.
Als u Copilot hebt, kunt u AI-hulp krijgen voor de evaluatie. Beweeg de muisaanwijzer over de voorwaarde en selecteer Analyseren met Copilot. Copilot verdeelt niet alleen de voorwaarde in de subexpressies, maar helpt u ook bij het analyseren van onverwachte of onjuiste waarden, waardoor u inzicht krijgt in waarom het resultaat kan verschillen van wat u verwachtte.
Retourwaarden van LINQ-query's weergeven
Terwijl u in het foutopsporingsprogramma bent onderbroken, kunt u de muisaanwijzer op afzonderlijke componenten of segmenten van uw LINQ-query bewegen om de onmiddellijke retourwaarde voor query's te evalueren.
Als u Copilot hebt, kunt u HULP bij AI krijgen terwijl u de muisaanwijzer boven de LINQ-query beweegt. Selecteer het GitHub Copilot-pictogram aan het einde van de DataTip om de query te analyseren met Copilot. Copilot legt vervolgens de syntaxis van de LINQ-query uit en verduidelijkt waarom u het opgegeven resultaat krijgt.
Hulp bij AI krijgen
Als u Copilot hebt, kunt u AI-hulp krijgen terwijl u variabelen bekijkt in de code-editor of in de vensters Auto's of Locals. Terwijl u aan het debuggen bent, klikt u met de rechtermuisknop op een variabele en gebruikt u de knop Copilot vragen
In dit scenario kent Copilot al de context voor uw vraag, dus u hoeft zelf geen context te bieden in de chat. Zie Fouten opsporen met Copilotvoor meer informatie.
Variabelen inspecteren in debuggervensters (Automatische en Lokale)
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 rond de huidige instructie waar het foutopsporingsprogramma is gepauzeerd. In het venster Locals worden variabelen weergegeven die zijn gedefinieerd in het lokale bereik. Dit is meestal de huidige functie of methode.
Om het venster Autos te openen, selecteert u tijdens het debuggen Debug>Windows>Autosof drukt u op Ctrl+Alt+V>A.
Het venster Autos is beschikbaar voor C#-, Visual Basic-, C++- en Python-code, maar niet voor JavaScript of F#.
Tijdens het debuggen, opent u het venster Locals door Debuggen>Windows>Localste selecteren, of door op Alt+4te drukken.
Uitbreidbare matrices en objecten worden weergegeven in de vensters Auto's en Locals . Selecteer de pijl links van een variabelenaam om de weergave uit te vouwen om velden en eigenschappen weer te geven. Hier volgt een voorbeeld van een System.IO.FileStream object in het venster Locals:
Een rode waarde in het venster Locals of Autos betekent dat de waarde sinds de laatste evaluatie is gewijzigd. De wijziging kan afkomstig zijn van een vorige foutopsporingssessie of omdat u de waarde in het venster hebt gewijzigd.
De standaardnotatie voor numerieke notatie in foutopsporingsprogrammavensters is decimaal. Als u deze wilt wijzigen in hexadecimaal, klikt u met de rechtermuisknop in het venster Locals of Autos en selecteert u Hexadecimale weergave. Deze wijziging is van invloed op alle foutopsporingsprogrammavensters.
Variabele waarden bewerken in het venster Autos of Locals
Als u de waarden van de meeste variabelen in de Autos of Locals vensters wilt bewerken, dubbelklikt u op de waarde en voert u de nieuwe waarde in.
U kunt een expressie invoeren voor een waarde, bijvoorbeeld a + b. Het foutopsporingsprogramma accepteert de meest geldige taalexpressies.
In systeemeigen C++-code moet u mogelijk de context van een variabelenaam kwalificeren. Zie Contextoperator (C++)voor meer informatie.
Voorzichtigheid
Zorg ervoor dat u de gevolgen begrijpt voordat u waarden en expressies wijzigt. Enkele mogelijke problemen zijn:
Het evalueren van sommige expressies kan de waarde van een variabele wijzigen of anderszins van invloed zijn op de status van uw programma. Als u bijvoorbeeld
var1 = ++var2evalueert, wordt de waarde van zowelvar1alsvar2gewijzigd. Deze uitdrukkingen zouden bijwerkingenhebben. Bijwerkingen kunnen onverwachte resultaten veroorzaken als u er niet van op de hoogte bent.Het bewerken van drijvende-kommawaarden kan leiden tot kleine onnauwkeurigheden vanwege decimale naar binaire conversie van fractionele onderdelen. Zelfs een schijnbaar ongevaarlijke bewerking kan leiden tot wijzigingen in sommige van de bits in de zwevendekomma-variabele.
Zoeken in het venster Autos of Locals
U kunt zoeken naar trefwoorden in de kolommen Naam, Waarde en Type van het Autos of Locals venster met behulp van de zoekbalk boven elk venster. Druk op ENTER of selecteer een van de pijlen om een zoekopdracht uit te voeren. Als u een doorlopende zoekopdracht wilt annuleren, selecteert u het pictogram 'x' in de zoekbalk.
Gebruik de linker- en rechterpijl (Shift+F3 en F3 respectievelijk) om te navigeren tussen gevonden overeenkomsten.
Gebruik de Search Deeper vervolgkeuzelijst boven aan het Autos of Locals venster om te selecteren hoe diep u in de geneste objecten wilt zoeken.
Eigenschappen vastpinnen in het venster Autos of Locals
Notitie
Deze functie wordt ondersteund voor .NET Core 3.0 of hoger.
U kunt objecten snel inspecteren op basis van hun eigenschappen in de vensters Auto's en Locals met het hulpprogramma Vastgemaakte eigenschappen. Als u deze tool wilt gebruiken, beweegt u de muisaanwijzer over een eigenschap en selecteert u het speldpictogram dat wordt weergegeven of klikt u met de rechtermuisknop en selecteert u de optie Pin lid als favoriet in het verschijnende contextmenu. Deze eigenschap wordt naar boven gehaald in de eigenschappenlijst van het object, en de naam en waarde van de eigenschap worden weergegeven in de kolom Waarde. Als u een eigenschap wilt loskoppelen, selecteert u het speldpictogram opnieuw of selecteert u de optie Lid als Favoriet loskoppelen in het snelmenu.
U kunt ook eigenschappennamen in- of uitschakelen en niet-vastgemaakte eigenschappen filteren bij het weergeven van de eigenschappenlijst van een object in de vensters Autos en Locals. U kunt elke optie openen door de knoppen te selecteren op de werkbalk boven de vensters Auto's of Locals.
De context voor het venster Auto's of Locals wijzigen
U kunt de werkbalk Locatie voor foutopsporing gebruiken om een gewenste functie, thread of proces te selecteren, waarmee de context voor de Autos en Locals vensters wordt gewijzigd.
Als u de werkbalk Locatie voor foutopsporing wilt inschakelen, klikt u in een leeg gedeelte van het werkbalkgebied en selecteert u Locatie voor foutopsporing in de vervolgkeuzelijst, of selecteert u >Werkbalken>Foutopsporingslocatie.
Stel een onderbrekingspunt in en begin met foutopsporing. Wanneer het onderbrekingspunt wordt bereikt, wordt de uitvoering onderbroken en ziet u de locatie op de werkbalk Locatie voor foutopsporing.
Taalverschillen in het venster Autos (C#, C++, Visual Basic, Python)
In verschillende codetalen worden verschillende variabelen weergegeven in het venster Autos.
In C# en Visual Basic worden in het venster Autos alle variabelen weergegeven die worden gebruikt op de huidige of voorgaande regel. Declareer bijvoorbeeld in C# of Visual Basic-code de volgende vier variabelen:
public static void Main() { int a, b, c, d; a = 1; b = 2; c = 3; d = 4; }Stel een onderbrekingspunt in op de regel
c = 3;en start het foutopsporingsprogramma. Wanneer de uitvoering wordt onderbroken, wordt het venster Autos weergegeven.
De waarde van
cis 0, omdat de regelc = 3nog niet is uitgevoerd.In C++ worden in het venster Autos de variabelen weergegeven die in ten minste drie regels worden gebruikt voordat de huidige regel waar de uitvoering is onderbroken. Declareer bijvoorbeeld zes variabelen in C++-code:
void main() { int a, b, c, d, e, f; a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; }Stel een onderbrekingspunt in op de regel
e = 5;en voer het foutopsporingsprogramma uit. Wanneer de uitvoering stopt, wordt het venster Autos weergegeven:
De variabele
eis niet geïnitialiseerd, omdat de regele = 5nog niet is uitgevoerd.
Retourwaarden weergeven in het venster Autos
In het volgende voorbeeld voegt deze C#-code de retourwaarden van twee functies toe:
static void Main(string[] args)
{
int a, b, c, d;
a = 1;
b = 2;
c = 3;
d = 4;
int x = sumVars(a, b) + subtractVars(c, d);
}
private static int sumVars(int i, int j)
{
return i + j;
}
private static int subtractVars(int i, int j)
{
return j - i;
}
De retourwaarden van de sumVars()- en subtractVars() methodeaanroepen in het venster Automatisch weergeven:
Stel een onderbrekingspunt in op de
int x = sumVars(a, b) + subtractVars(c, d);regel.Begin met foutopsporing en wanneer de uitvoering bij het onderbrekingspunt pauzeert, selecteert u Stap Over of drukt u op F10. U ziet nu de volgende retourwaarden in het venster Autos:
Een visualizer openen om variabelen te inspecteren
Terwijl u fouten in Visual Studio opspoort, kunt u grote tekenreeksen of complexe objecten weergeven met ingebouwde visuals waarmee de gegevens gemakkelijker te inspecteren zijn. Voorbeeld:
- De tekenreeks visualiseren toont tekst-, XML-, HTML- en JSON-tekenreeksen die te lang zijn voor een gegevenstip of foutopsporingsvenster. Het kan u ook helpen bij het identificeren van vervormde tekenreeksen. Voor meer informatie, zie Tekenreeksen weergeven in een tekenreeks-visualizer.
- De DataSet- en IEnumerable visualizers tonen .NET-verzamelingsobjecten in een visualisatie in tabelvorm. Voor meer informatie zie Tabulaire visualisaties in Visual Studio) objecten.
De visualisaties verschijnen in de Autos-vensters, gegevensinfo, en andere debuggervensters.
Notitie
Als u XAML- of WPF UI-elementen in een visualisator wilt inspecteren, zie dan XAML-eigenschappen inspecteren tijdens het debuggen of Hoe het WPF-boomvisualisator te gebruiken.
Om een visualizer te openen, moet u gepauzeerd zijn tijdens het debuggen. Beweeg de muisaanwijzer over een variabele met een ondersteunde visualisatiewaarde en selecteer het vergrootglaspictogram
.