Dela via


Granska variabler och returnera värden i Visual Studio-felsökningsprogrammet

När du försöker felsöka ett problem försöker du ofta ta reda på om variabler lagrar de värden som du förväntar dig att de ska ha i ett visst apptillstånd. Några av de mest användbara funktionerna i felsökningsprogrammet är de som gör att du kan inspektera variabler.

Den här artikeln visar hur du inspekterar variabler och visar returvärden med hjälp av felsökningsprogrammet i Visual Studio. Felsökningsprogrammet innehåller flera praktiska sätt att utföra dessa uppgifter, inklusive följande:

  • I kodredigeraren kan du visa datatips och infogade returvärden
  • I felsökningsfönster (Autos, Locals och Watch windows) kan du visa variabelvärden
  • I visualiserare kan du visa stora strängar eller komplexa .NET-objekt

De här funktionerna är bara tillgängliga vid felsökning. Information om hur du startar en felsökningssession finns i Starta felsökning och ange avbrottsläge.

Notera

Om det är första gången du försöker felsöka kod kanske du vill läsa Felsökning för absoluta nybörjare och felsökningstekniker och verktyg innan du går igenom den här artikeln.

Visa variabler i kodredigeraren

När du felsöker vill du ofta ha ett snabbt sätt att kontrollera egenskapsvärden för objekt i kodredigeraren, och datatipsen är ett bra sätt att göra det på.

När du har pausat felsökningsprogrammet hovra över ett objekt med musen och du ser dess värde eller dess standardegenskapsvärde.

Visa ett datatips

Visa ett datatips

Om variabeln har egenskaper kan du expandera objektet för att se alla dess egenskaper.

Detaljerad information om hur du använder datatips finns i Visa datavärden i datatips.

Visa infogade returvärden för metodanrop i kodredigeraren

I .NET- och C++-kod kan du undersöka returvärden när du kliver över eller ut ur ett metodanrop, vilket kan vara användbart när returvärdet inte lagras i en lokal variabel. En metod kan användas som en parameter eller som returvärde för en annan metod.

Från och med Visual Studio 2022 version 17.12 kan du visa metodanropens returvärden direkt i koden och inte bara i fönstret Autos.

Skärmbild som visar returvärdena för metodanrop.

Med Copilot aktiverat kan du också få riktad hjälp relaterad till det infogade returvärdet med hjälp av knappen Fråga Copilot som visas i datatipset för returvärdet.

Skärmbild som visar returvärdena för metodanrop med Copilot-ikonen.

Debuggern visar också förinlagda värden efter retur, där returvärdet visas i slutet av kodraden där det returnerades.

Skärmbild som visar värden efter returen.

Du kan högerklicka på ett infogat returvärde och välja alternativ för den typ av returvärden som du vill visa infogade.

Skärmbild som visar alternativ för att visa returvärden.

Övervaka variabler

Du kan använda ett Watch-fönster för att ange en variabel (eller ett uttryck) som du vill hålla ett öga på.

När du felsöker högerklickar du på ett objekt i kodredigeraren och väljer Lägg till bevakning. Ett bevakningsfönster öppnas.

Klockfönster

Klockfönster

I det här exemplet har du en klocka inställd på objektet och du kan se dess värde ändras när du går igenom felsökningsprogrammet. Till skillnad från de andra variabelfönstren visar Watch-fönstren alltid de variabler som du tittar på (de visas nedtonade när de är utanför omfånget).

Detaljerad information finns i Ange en klocka med hjälp av Watch och QuickWatch Windows.

Visa infogade värden

I .NET- och C++-kod visar Visual Studio utvärderingsresultatet infogat för följande element: if-instruktioner, loopar och funktionsparametervärden.

För en if instruktion visar Visual Studio det infogade värdet till höger om själva villkoret.

Skärmbild som visar infogade värden för if-instruktioner.

För en loop-instruktion visas det infogade värdet på följande sätt.

Skärmbild som visar infogade värden för loop-instruktioner.

För funktionsparametrar visas även det infogade värdet till höger.

Om du har Copilot kan du få AI-hjälp för utvärderingen. Hovra över villkoret och välj Analysera med Copilot. Copilot delar inte bara upp villkoret i dess underuttryck, utan hjälper dig också att analysera oväntade eller felaktiga värden, vilket ger insikt i varför resultatet kan skilja sig från vad du förväntade dig.

Visa returvärden för LINQ-frågor

När du är pausad i felsökningsprogrammet kan du hovra över enskilda satser eller segment i LINQ-frågan för att utvärdera det omedelbara frågereturvärdet.

Skärmbild av returvärdet för LINQ-frågan.

Om du har Copilot kan du få AI-hjälp när du hovrar över LINQ-frågan. Välj GitHub Copilot-ikonen i slutet av DataTip för att analysera frågan med Copilot. Copilot förklarar sedan syntaxen för LINQ-frågan och förklarar varför du får det angivna resultatet.

Få AI-hjälp

Om du har Copilot kan du få AI-hjälp när du tittar på variabler i kodredigeraren eller i fönstren Autos eller Locals. När du felsöker högerklickar du på en variabel och använder knappen Fråga Copilot-skärmbildav Knappen Fråga Copilot. I det här scenariot känner Copilot redan till kontexten för din fråga, så du behöver inte ange kontext själv i chatten. Mer information finns i Felsöka med Copilot.

Granska variabler i felsökningsfönster (Automatiska och Lokala)

Windows Autos och Locals visar variabelvärden när du felsöker. Fönstren är endast tillgängliga under en felsökningssession. Fönstret Autos visar variabler som används runt den aktuella instruktionen där felsökningsprogrammet pausas. Fönstret Locals visar variabler som definierats i det lokala omfånget, vilket vanligtvis är den aktuella funktionen eller metoden.

  • Om du vill öppna fönstret Autos väljer du Felsöka>Windows>Autoseller trycker på Ctrl+Alt+V>A.

    Fönstret Autos är tillgängligt för C#, Visual Basic, C++ och Python-kod, men inte för JavaScript eller F#.

  • Om du vill öppna fönstret Locals väljer du Felsöka>Windows>Localseller trycker på Alt+4.

Utökningsbara matriser och objekt visas i fönstret Autos and Locals ( Autos and Locals ). Välj pilen till vänster om ett variabelnamn för att expandera vyn för att visa fält och egenskaper. Här är ett exempel på ett System.IO.FileStream objekt i fönstret Locals:

Skärmbild av fönstret Lokal, med filen inställd på värdet System.IO.FileStream.

Skärmbild av fönstret Lokal, med filen inställd på värdet System.IO.FileStream.

Ett rött värde i fönstret Locals eller Autos innebär att värdet har ändrats sedan den senaste utvärderingen. Ändringen kan bero på en tidigare felsökningssession eller på att du har ändrat värdet i fönstret.

Det numeriska standardformatet i felsökningsfönster är decimal. Om du vill ändra den till hexadecimal högerklickar du i fönstret Locals eller Autos och väljer Hexadecimal display. Den här ändringen påverkar alla felsökningsfönster.

Redigera variabelvärden i fönstret Autos eller Locals

Om du vill redigera värdena för de flesta variabler i Autos eller Locals fönster dubbelklickar du på värdet och anger det nya värdet.

Du kan ange ett uttryck för ett värde, till exempel a + b. Felsökningsprogrammet accepterar de flesta giltiga språkuttryck.

I inbyggd C++-kod kan du behöva kvalificera kontexten för ett variabelnamn. Mer information finns i Kontextoperator (C++).

Försiktighet

Se till att du förstår konsekvenserna innan du ändrar värden och uttryck. Några möjliga problem är:

  • Utvärdering av vissa uttryck kan ändra värdet för en variabel eller på annat sätt påverka programmets tillstånd. Om du till exempel utvärderar var1 = ++var2 ändras värdet för både var1 och var2. Dessa fraser sägs ha biverkningar. Biverkningar kan orsaka oväntade resultat om du inte känner till dem.

  • Redigering av flyttalsvärden kan leda till mindre felaktigheter på grund av decimal-till-binär konvertering av bråkkomponenter. Även en till synes ofarlig redigering kan resultera i ändringar i vissa bitar i flyttalsvariabeln.

Sök i Autos- eller Lokalfönstret

Du kan söka efter nyckelord i kolumnerna Namn, Värde och Typ i Autos eller Locals med hjälp av sökfältet ovanför varje fönster. Tryck på RETUR eller välj en av pilarna för att köra en sökning. Om du vill avbryta en pågående sökning väljer du ikonen "x" i sökfältet.

Använd vänster- och högerpilarna (Skift+F3 respektive F3) för att navigera mellan hittade matchningar.

Skärmbild av Sök i fönstret Lokalt.

Skärmbild av Sök i fönstret Lokalt.

Om du vill göra sökningen mer eller mindre grundlig använder du listrutan Sök djupare överst i fönstret Autos eller Locals för att välja hur många djupnivåer du vill söka i kapslade objekt.

Fäst egenskaper i fönstret Autos eller Locals

Notera

Den här funktionen stöds för .NET Core 3.0 eller senare.

Du kan snabbt inspektera objekt genom deras egenskaper i fönstret Autos and Locals med verktyget Pinnable Properties. Om du vill använda det här verktyget, håll muspekaren över en egenskap och välj nålikonen som visas, eller högerklicka och välj alternativet Fäst medlem som favorit i snabbmenyn som visas. Det här bubblar upp egenskapen överst i objektets egenskapslista och egenskapsnamnet och värdet visas i kolumnen Value. För att avfästa en egenskap väljer du fästikonen igen eller väljer alternativet Avfäst egenskap som favorit i snabbmenyn.

Skärmbild av Fastnåls egenskaper i fönstret Lokala.

Du kan också växla mellan att visa och dölja egenskapsnamn och filtrera bort icke-fästa egenskaper när du visar objektets egenskapslista i fönstret Autos eller Lokaler. Du kan komma åt varje alternativ genom att välja knapparna i verktygsfältet ovanför fönstret Autos eller Locals.

Skärmbild av Filtrera favoritegenskaper.

Skärmbild av växling av egenskapsnamn.

Ändra kontexten för fönstret Autos eller Locals

Du kan använda verktygsfältet Felsökningsplats för att välja en önskad funktion, tråd eller process som ändrar kontexten för Autos och Locals windows.

Om du vill aktivera verktygsfältet Felsökningsplats klickar du i en tom del av verktygsfältsområdet och väljer Felsökningsplats i listrutan eller väljer Visa>verktygsfält>Felsökningsplats.

Ange en brytpunkt och börja felsöka. När brytpunkten nås pausar körningen och du kan se platsen i Debug Location verktygsfältet.

Skärmbild av Felsökningsplats verktygsfält.

Skärmbild av Felsökningsplats verktygsfält.

Språkskillnader i fönstret Autos (C#, C++, Visual Basic, Python)

Olika kodspråk visar olika variabler i fönstret Autos.

  • I C# och Visual Basic visar fönstret Autos alla variabler som används på den aktuella eller föregående raden. I C# eller Visual Basic-kod deklarerar du till exempel följande fyra variabler:

         public static void Main()
         {
            int a, b, c, d;
            a = 1;
            b = 2;
            c = 3;
            d = 4;
         }
    

    Ange en brytpunkt på raden c = 3;och starta felsökningsprogrammet. När körningen pausar visas fönstret Autos:

    Skärmbild av fönstret Autos med värdet c inställt på 0.

    Skärmbild av fönstret Autos med värdet c inställt på 0.

    Värdet för c är 0 eftersom raden c = 3 ännu inte har körts.

  • I C++ visar fönstret Autos de variabler som används i minst tre rader före den aktuella raden där körningen är pausad. I C++-kod deklarerar du till exempel sex variabler:

         void main() {
             int a, b, c, d, e, f;
             a = 1;
             b = 2;
             c = 3;
             d = 4;
             e = 5;
             f = 6;
         }
    

    Ange en brytpunkt på raden e = 5; och kör felsökningsprogrammet. När körningen stoppas visas fönstret Autos:

    Skärmbild av fönstret Autos med raden markerad som visar int c med värdet 3.

    Skärmbild av fönstret Autos med raden markerad som visar int c med värdet 3.

    Variabeln e är onitialiserad eftersom raden e = 5 ännu inte har körts.

Visa returvärden i fönstret Autos

I följande exempel lägger den här C#-koden till returvärdena för två funktioner:

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;
}

Så här ser du returvärdena för sumVars()- och subtractVars()-metodens anrop i fönstret Autos:

  1. Ange en brytpunkt på raden int x = sumVars(a, b) + subtractVars(c, d);.

  2. Börja debugga och när körningen pausar vid brytpunkten väljer du Steg över eller trycker på F10. Du bör se följande returvärden i fönstret Autos:

    Skärmbild av automatiskt returvärde C#. automatiskt

Öppna en visualiserare för att inspektera variabler

När du felsöker i Visual Studio kan du visa stora strängar eller komplexa objekt med inbyggda visualiserare som gör data enklare att inspektera. Till exempel:

  • Strängvisualiseraren visar text-, XML-, HTML- och JSON-strängar som är för långa för ett datatips eller felsökningsfönster. Det kan också hjälpa dig att identifiera felaktiga strängar. Mer information finns i Visa strängar i en strängvisualiserare.
  • Visualiserarna DataSet och IEnumerable visar .NET-samlingsobjekt i en tabellvisualiserare. Mer information finns i Tabellvisualiserare i Visual Studio)-objekt.

Visualiseringarna visas i fönstret Autos , datatips och andra felsökningsfönster.

Notera

Om du behöver inspektera XAML- eller WPF-gränssnittselement i en visualiserare kan du läsa eller Granska XAML-egenskaper när du felsöker eller Så här använder du WPF-trädvisualiseraren.

Om du vill öppna en visualiserare måste du pausas under felsökningen. Hovra över en variabel som har ett visualiserarvärde som stöds och välj förstoringsglasikonen VisualizerIcon.

Öppna en strängvisualiserare

Öppna en strängvisualiserare