Navigera genom kod med hjälp av Visual Studio-felsökningsprogrammet
Visual Studio-felsökningsprogrammet kan hjälpa dig att navigera genom kod för att inspektera tillståndet för en app och visa dess körningsflöde, vilket även kallas kodstegning. Du kan använda kortkommandon, felsökningskommandon, brytpunkter och andra funktioner för att snabbt komma åt den kod som du vill undersöka. Genom att bekanta dig med felsökningsnavigeringskommandon och genvägar kan du hitta och lösa appproblem snabbare och enklare. En lista över de vanligaste kortkommandona som rör kodnavigering och felsökning finns i avsnittet Felsökning i Kortkommandon.
Notera
Om du är nybörjare på att felsöka kod kanske du vill läsa Felsökning för absoluta nybörjare och felsökningstekniker och verktyg innan du läser den här artikeln.
Starta felsökningen och ange brytläge
Vissa navigeringskommandon startar appen och kopplar automatiskt felsökningsprogrammet. Din app pausar på en specifik kodrad baserat på det kommando som du använde för att starta navigeringen och du anger pausläge (det vill: din app pausas i felsökningsprogrammet).
I pausläge pausas appkörningen medan funktioner, variabler och objekt finns kvar i minnet. När felsökningsprogrammet är i avbrottsläge kan du navigera genom koden. Det finns två mycket vanliga sätt att snabbt gå in i brytläge:
Ange en brytpunkt och starta appen.
Kör till en specifik plats eller funktion.
I kodredigeraren i Visual Studio kan du till exempel använda kommandot Kör till markör för att starta appen med felsökningsprogrammet kopplat och ange brytläge. Sedan kan du använda stegkommandon för att navigera i koden.
Code-stegning kommandon kan användas för att starta din app, men används oftare när du har gått in i avbrottsläge.
Navigera i kod när du är i brytningsläge
Vissa navigeringskommandon används främst i pausläge (det vill: medan du är pausad i felsökningsprogrammet).
Kodstegning kommando används oftast i debugläge.
Vissa kommandon som Kör för att klicka på kan bara användas i avbrottsläge.
Felsöknings- och brytläge
När du är i avbrottsläge kan du använda olika kommandon för att navigera genom koden. Du kan undersöka värdena för variabler för att söka efter överträdelser eller buggar. För vissa projekttyper kan du också göra justeringar i appen när du är i avbrottsläge.
De flesta felsökningsfönster, som -modulerna och Watch-fönster, är endast tillgängliga när felsökningsprogrammet är kopplat till din app. Vissa felsökningsfunktioner, som att visa variabelvärden i fönstret Locals eller utvärdera uttryck i fönstret Watch, är endast tillgängliga när felsökningsprogrammet har pausats (dvs. i avbrottsläge).
Notera
Om du går in i kod som inte har käll- eller symbolfiler (.pdb) laddade, visar felsökningsprogrammet en Källfiler hittades inte eller Symboler hittades inte sida som kan hjälpa dig att hitta och ladda filerna. Se Ange symbol (.pdb) och källfiler. Om du inte kan läsa in symbolen eller källfilerna kan du fortfarande felsöka sammansättningsinstruktionerna i fönstret Disassembly.
Stega genom kod
Code step refererar till att köra programkoden en instruktion i taget, med felsökningsprogrammet kopplat. Med kommandona för felsökningssteg kan du observera effekterna av varje instruktion och ta reda på mer om dess körningsflöde.
Kliv in i koden
Om du vill stoppa varje instruktion när du felsöker använder du Felsöka>Steg in ieller väljer F11.
Felsökningsprogrammet går igenom kodinstruktioner, inte fysiska rader. Till exempel kan en if
-sats skrivas på en rad:
Men när du går in på den här raden behandlar felsökningsprogrammet villkoret som ett steg och konsekvensen som ett annat. I föregående exempel är villkoret sant.
Vid ett kapslat funktionsanrop använder Stega in i för att stiga in i den mest djupt kapslade funktionen. Om du till exempel använder Step Into på ett anrop som Func1(Func2())
, stegar felsökningsprogrammet in i funktionen Func2
.
Tips
När du kör varje kodrad kan du hovra över variabler för att se deras värden, eller använda Locals och Watch windows för att se värdena ändras. Du kan också visuellt spåra anropsstacken medan du går in i funktioner. (Endast för Visual Studio Enterprise, se Map-metoder i anropsstacken vid felsökning.)
Stega igenom kod och hoppa över vissa funktioner
Du kanske inte bryr dig om en funktion när du felsöker. Eller så kanske du vet att viss kod fungerar, till exempel vältestad bibliotekskod. Du kan använda följande kommandon för att hoppa över kod när du kodstegar. Funktionerna körs fortfarande, men felsökningsprogrammet hoppar över dem.
Tangentbordskommando | Felsökningsmenykommando | Beskrivning |
---|---|---|
F10 | Steg Över | Om den aktuella raden innehåller ett funktionsanrop kör Step Over koden och pausar sedan körningen på den första kodraden när den anropade funktionen returneras. |
Shift+F11 | steg ut | Step Out fortsätter att köra kod och pausar körningen när den aktuella funktionen returneras. Felsökningsprogrammet hoppar över den aktuella funktionen. |
Kör till en specifik plats eller funktion
Du kanske föredrar att köra direkt till en specifik plats eller funktion när du vet exakt vilken kod du vill inspektera eller om du vet var du vill börja felsöka.
- Det är bäst att ange en brytpunkt om du tror att du vill återanvända brytpunkten.
- Andra metoder är till för enkelhetens skull och liknar att ange en tillfällig brytpunkt.
Kör till en brytpunkt i koden
Om du vill ange en enkel brytpunkt i koden väljer du marginalen längst till vänster bredvid den kodrad där du vill pausa körningen. Du kan också välja raden och sedan välja F9, välja Felsöka>Växla brytpunkteller högerklicka och välja Brytpunkt>Infoga brytpunkt. Brytpunkten visas som en röd punkt i vänstermarginalen bredvid kodraden. Felsökningsprogrammet pausar körningen precis innan raden körs.
Brytpunkter i Visual Studio ger en omfattande uppsättning funktioner, till exempel villkorliga brytpunkter och spårningspunkter. Mer information finns i Använda brytpunkter.
Kör till en funktionsbrytpunkt
Du kan ange att felsökaren ska köras tills den når en angiven funktion. Du kan ange funktionen efter namn eller välja den från anropsstacken.
Så här anger du en funktionsbrytpunkt efter namn:
Välj Felsöka>Ny brytpunkt>Funktionsbrytpunkt.
I dialogrutan Ny funktionsbrytpunkt anger du namnet på funktionen och väljer dess språk:
Välj OK.
Om funktionen är överbelastad eller i mer än ett namnområde kan du välja den du vill använda i fönstret Brytpunkter:
Så här väljer du en funktionsbrytpunkt från anropsstacken:
När du felsöker öppnar du fönstret Samtalsstack genom att välja Felsök>Windows>Samtalsstack.
I fönstret Anropsstack, högerklicka på en funktion och välj Kör till markör, eller välj Ctrl+F10.
Information om hur du visuellt spårar anropsstacken finns i Map-metoder i anropsstacken när du felsöker.
Kör till en markörposition
För att köra till markörens position i källkoden eller fönstret Anropsstack, markerar du raden där du vill göra ett avbrott, högerklickar och väljer Kör till markör, eller väljer Ctrl+F10. Att välja Kör till markör liknar att ange en tillfällig brytpunkt.
Tvinga körning till en markörplats
Om du vill köra till markörens plats i källkoden eller fönstret Anropa stacken väljer du den rad som du vill bryta vid och högerklickar och väljer Framtvinga körning till markör. Om du väljer Framtvinga körning till markör hoppar över eventuella brytpunkter och undantag från första chansen tills felsökaren når kodraden där markören finns.
Kör för att klicka
När felsökningsprogrammet har pausats kan du föra markören över en instruktion i källkoden eller i fönstret Disassembly och välja den gröna pilen märkt Kör hit. Att använda Kör för att klicka på liknar att ange en tillfällig brytpunkt.
Not
Kör för att klicka på är tillgängligt från och med Visual Studio 2017.
Tvinga körning att klicka
När felsökningsprogrammet är pausat kan du hovra över en instruktion i källkoden medan du trycker på Skift- och sedan välja Framtvinga körningskörning till här (den dubbla gröna pilen). När du väljer det här alternativet bifogar programmet Visual Studio-felsökaren och pausar vid markörens plats. Brytpunkter och förstahandsundantag som hittades under körningen inaktiveras tillfälligt.
Not
Force Run to Click är tillgängligt från och med Visual Studio 2022.
Dela upp koden manuellt
Om du vill bryta in i nästa tillgängliga kodrad i en app som körs, väljer du Felsök>Bryt alla, eller tryck Ctrl+Alt+Bryt.
Felsöka kod som inte är användarbaserad
Som standard försöker felsökaren bara felsöka din appkod genom att aktivera en inställning som heter Just My Code. Mer information om hur den här funktionen fungerar för olika projekttyper och språk och hur du kan anpassa den finns i Just My Code.
Om du vill titta på ramverkskod, bibliotekskod från tredje part eller systemanrop under felsökning kan du inaktivera Just My Code. I Verktyg (eller Felsök) >Alternativ>Felsökningavmarkerar du kryssrutan Aktivera Just My Code. När Just My Code är inaktiverat visas icke-användarkod i felsökningsfönstren och felsökaren kan gå in i koden som inte är användar.
Not
Just My Code stöds inte för enhetsprojekt.
Felsöka systemkod
Om du har läst in felsökningssymboler för Microsoft-systemkod och inaktiverat Just My Code kan du gå in i ett systemanrop precis som andra anrop.
Från och med Visual Studio 2022 version 17.7 kan du automatisktdekompilera .NET-kod när du går in i extern kod utan att behöva läsa in felsökningssymboler manuellt. Mer information finns i Generera källkod från .NET-sammansättningar vid felsökning.
Mer information om hur du läser in Microsoft-symboler finns i Konfigurera plats för symbolfiler och inläsningsalternativ.
Så här läser du in symboler för en specifik systemkomponent:
När du felsöker öppnar du fönstret Moduler genom att välja Felsöka>Windows>-moduler eller genom att trycka på Ctrl+Alt+U.
I fönstret Moduler kan du se vilka moduler som har symboler laddats in i kolumnen Symbolstatus. Högerklicka på den modul som du vill läsa in symboler för och välj sedan Läs in symboler.
Stega in i egenskaper och operatorer i hanterad kod
Felsökningsverktyget hoppar över egenskaper och operatorer i hanterad kod som standardinställning. I de flesta fall ger det här beteendet en bättre felsökningsupplevelse. För att steppa in i egenskaper eller operatorer, välj Felsöka>Alternativ. På sidan Felsökning>Allmänt avmarkerar du kryssrutan Steg över egenskaper och operatorer (endast hanterade).
Flytta pekaren för att ändra exekveringsflödet
Du kan ändra nästa instruktion som körs genom att flytta den gula körningspekaren. Du kan använda den här funktionen i pausläge.
Det här är en avancerad felsökningsfunktion. För mer information, se Flytta körningspekaren.