Använd minnesfönstren i Visual Studio-felsökningsprogrammet (C#, C++, Visual Basic, F#)
Under felsökningen visar fönstret Memory minnesutrymmet som appen använder.
Felsökningsfönster som Watch, Autos, Localsoch dialogrutan QuickWatch visar variabler som lagras på specifika platser i minnet. Fönstret Memory visar den övergripande bilden. Minnesvyn är praktisk för att undersöka stora mängder data (till exempel buffertar eller stora strängar) som inte visas bra i de andra fönstren.
Fönstret Minne är inte begränsat till att visa data. Den visar allt i minnesutrymmet, inklusive data, kod och slumpmässiga skräpbitar i otilldelat minne.
Fönstret Memory är inte tillgängligt för skript- eller SQL-felsökning. Dessa språk känner inte igen begreppet minne.
Öppna ett minnesfönster
Precis som andra felsökningsfönster är Minnesfönster endast tillgängliga under en felsökningssession.
Viktig
Om du vill aktivera minnesfönster måste Aktivera felsökning på adressnivå väljas i Verktyg>Alternativ (eller Felsökning>Alternativ) >Felsökning>Allmänt.
Öppna ett minnesfönster:
Kontrollera att Aktivera felsökning på adressnivå är markerat i Verktyg>Alternativ (eller Felsökning>Alternativ) >Felsökning>Allmänt.
Börja felsöka genom att välja den gröna pilen, trycka på F5eller välja Felsök>Starta felsökning.
Under Felsöka>Windows>Memoryväljer du Memory 1, Memory 2, Memory 3eller Memory 4. (Vissa versioner av Visual Studio har endast ett minnesfönster.)
Med flera fönster kan du underhålla vyer för olika områden i minnesutrymmet samtidigt.
Navigera i minnesfönstret
Adressutrymmet på en dator är stort och du kan enkelt tappa bort din plats genom att bläddra i fönstret Minne.
Högre minnesadresser visas längst ned i fönstret. Om du vill visa en högre adress rullar du nedåt. Rulla uppåt om du vill visa en lägre adress.
I de flesta fall vill du hitta en specifik minnesplats.
Hitta en minnesplats
Du kan omedelbart gå till en angiven adress i fönstret Minne genom att dra och släppa, eller genom att ange adressen i fältet Adress. Fältet Address accepterar alfanumeriska adresser samt uttryck som utvärderas till adresser, såsom e.User.NonroamableId
.
Om du vill framtvinga omedelbar omvärdering av ett uttryck i fältet Adress väljer du den rundade pilen Omvärdera automatiskt-ikonen.
Som standardinställning behandlar fönstret Memory uttryck för Address som liveuttryck, som utvärderas igen när appen körs. Liveuttryck kan till exempel vara användbara för att visa det minne som berörs av en pekarvariabel.
Använd dra och släpp för att flytta till en minnesplats:
I valfritt felsökningsfönster väljer du en minnesadress eller en pekarvariabel som innehåller en minnesadress.
Dra och släpp adressen eller pekaren i fönstret Minne.
Adressen visas i fältet Adress och fönstret Minne justeras för att visa adressen längst upp.
Ange en plats i fältet Adress för att flytta till en minnesplats:
Skriv eller klistra in adressen eller uttrycket i fältet Adress och tryck på Enter, eller välj det från listrutan i fältet Adress.
Adressen visas i fältet Adress och fönstret Minne justeras för att visa adressen längst upp.
Anpassa minnesfönstret
Som standard visas minnesinnehållet som ett bytes heltal i hexadecimalt format, och fönsterbredden avgör antalet kolumner som visas. Du kan anpassa hur fönstret Minne visar minnesinnehåll.
Ändra formatet på minnesinnehållet:
- Högerklicka i fönstret Minne och välj de format du vill ha från snabbmenyn.
Ändra antalet kolumner i fönstret Minne:
- Välj listrutepilen bredvid fältet Kolumner och välj antalet kolumner som ska visas, eller välj Automatisk för automatisk justering baserat på fönstrets bredd.
Om du inte vill att innehållet i fönstret Minne ändras när appen körs kan du inaktivera utvärdering av liveuttryck.
Växla på liveutvärdering:
Högerklicka i fönstret Minne och välj Omvärdera automatiskt i snabbmenyn.
Not
Utvärdering av liveuttryck är en växling och är aktiverad som standard, så slås den av när du väljer Omvärdera automatiskt. Om du väljer Omvärdera automatiskt aktiveras den igen.
Du kan dölja eller visa verktygsfältet överst i fönstret Minne. Du kommer inte att ha åtkomst till fältet Adress eller andra verktyg när verktygsfältet är dolt.
Växla verktygsfältsvisning:
- Högerklicka i fönstret Minne och välj Visa verktygsfältet i snabbmenyn. Verktygsfältet visas eller försvinner, beroende på dess tidigare tillstånd.
Följ en pekare genom minnet (C/C++)
I interna kodappar kan du använda registernamn som liveuttryck. Du kan till exempel använda stackpekaren för att följa stacken.
Följ en pekare genom minnet:
I fönstret MemoryAddress anger du ett pekaruttryck som finns i det aktuella omfånget. Beroende på språket kan du behöva avreferera det.
Tryck på Enter.
När du använder ett felsökningskommando, till exempel Steg, ändras minnesadressen som visas i fältet Adress och längst upp i fönstret Minne automatiskt när pekaren ändras.
Visa minnespekare (.NET)
Om du vill visa innehållet i ett .NET-objekt baserat på en minnespekare, till exempel en adress som hämtats från en heap-ögonblicksbild, kan du göra det med hjälp av {CLR}@Address
notation. Adressen måste vara en pekare till minnet, till exempel 0x1D102A581B0. Ange minnespekaren med {CLR}@Address
-notation i adressfältet i minnesrutan. Du kan också använda samma notation för att lägga till en klocka med hjälp av Watch-fönstret.
Om du vill hämta en minnespekareadress från en heap-snapshot, öppna heap-dumpen och välj Felsöka hanterat minne, vilket öppnar verktyget Minnesanvändning. Högerklicka på det objekt som du är intresserad av och välj Visa instanser.