Gebruik de geheugenvensters in het Visual Studio-foutopsporingsprogramma (C#, C++, Visual Basic, F#)
Tijdens foutopsporing toont het venster Geheugen de geheugenruimte die uw app gebruikt.
Foutopsporingsprogrammavensters zoals Watch, Autos, Localsen in het dialoogvenster QuickWatch worden variabelen weergegeven die zijn opgeslagen op specifieke locaties in het geheugen. In het venster Geheugen ziet u de algehele afbeelding. De geheugenweergave is handig voor het onderzoeken van grote hoeveelheden gegevens (buffers of grote tekenreeksen, bijvoorbeeld) die niet goed worden weergegeven in de andere vensters.
Het venster geheugen is niet beperkt tot het weergeven van gegevens. Het geeft alles weer in de geheugenruimte, inclusief gegevens, code en willekeurige stukjes rommel in niet-toegewezen geheugen.
Het venster Geheugen is niet beschikbaar voor script- of SQL-foutopsporing. Deze talen herkennen het concept van geheugen niet.
Een geheugenvenster openen
Net als andere debugvensters zijn de geheugenvensters alleen beschikbaar tijdens een foutopsporingssessie.
Belangrijk
Als u de geheugenvensters wilt inschakelen, moet Foutopsporing op adresniveau inschakelen zijn geselecteerd in Hulpmiddelen>Opties (of Debug>Opties) >Foutopsporing>Algemeen.
Open een geheugenvenster:
Zorg ervoor dat Foutopsporing op adresniveau inschakelen is geselecteerd in Extra>Opties (of Foutopsporing>Opties) >Foutopsporing>Algemeen.
Start de foutopsporing door de groene pijl te selecteren, op F5te drukken of Foutopsporing>Start Debuggingte selecteren.
Selecteer onder Foutopsporing>Windows>Geheugende optie Geheugen 1, Geheugen 2, Geheugen 3of Geheugen 4. (Sommige edities van Visual Studio bieden slechts één venster Memory.)
Met meerdere vensters kunt u weergaven voor verschillende gebieden in de geheugenruimte tegelijkertijd onderhouden.
Navigeren in het geheugenvenster
De adresruimte van een computer is groot en u kunt uw plaats eenvoudig verliezen door te schuiven in het venster Geheugen.
Adressen met een hoger geheugen worden onder aan het venster weergegeven. Als u een hoger adres wilt weergeven, schuift u omlaag. Als u een lager adres wilt weergeven, schuift u omhoog.
In de meeste scenario's wilt u een specifieke geheugenlocatie vinden.
Een geheugenlocatie zoeken
U kunt direct naar een opgegeven adres in het venster Geheugen gaan met behulp van slepen en neerzetten of door het adres in te voeren in het veld Adres. Het veld Adres accepteert alfanumerieke adressen en expressies die resulteren in adressen, zoals e.User.NonroamableId
.
Als u een expressie in het veld Adres onmiddellijk opnieuw wilt evalueren, selecteert u het pictogram met de afgeronde pijl Automatisch opnieuw evalueren.
Het venster Geheugen behandelt standaard Address-expressies als live-expressies, die opnieuw worden geëvalueerd als de app wordt uitgevoerd. Live-expressies kunnen bijvoorbeeld handig zijn om het geheugen weer te geven dat wordt aangeraakt door een aanwijzervariabele.
Gebruik slepen en neerzetten om iets naar een geheugenlocatie te verplaatsen.
Selecteer in een foutopsporingsprogrammavenster een geheugenadres of een aanwijzervariabele die een geheugenadres bevat.
Sleep het adres of de aanwijzer in het venster Geheugen.
Dat adres wordt weergegeven in het veld Adres en het venster Geheugen wordt aangepast om dat adres bovenaan weer te geven.
Voer een locatie in het veld Adres in om naar een geheugenlocatie te gaan:
Typ of plak het adres of de expressie in het veld Adres en druk op Enterof kies het in de vervolgkeuzelijst in het veld Adres.
Dat adres wordt weergegeven in het veld Adres en het venster Geheugen wordt aangepast om dat adres bovenaan weer te geven.
Het geheugenvenster aanpassen
Standaard wordt de geheugeninhoud weergegeven als gehele getallen van 1 byte in hexadecimale notatie en bepaalt de breedte van het venster het aantal weergegeven kolommen. U kunt de manier aanpassen waarop in het venster Geheugen de inhoud van het geheugen wordt weergegeven.
De indeling van de geheugeninhoud wijzigen:
- Klik met de rechtermuisknop in het venster Geheugen en kies de gewenste indelingen in het contextmenu.
Het aantal kolommen in het venster Geheugen wijzigen:
- Selecteer de vervolgkeuzepijl naast het veld Kolommen en selecteer het aantal kolommen dat moet worden weergegeven of selecteer Automatisch voor automatische aanpassing op basis van de breedte van het venster.
Als u de inhoud van het venster Geheugen niet wilt wijzigen terwijl uw app wordt uitgevoerd, kunt u de evaluatie van live-expressies uitschakelen.
Live-evaluatie in-/uitschakelen:
Klik met de rechtermuisknop in het venster Geheugen en selecteer Automatisch opnieuw evalueren in het snelmenu.
Notitie
Live-expressie-evaluatie is een wisselknop en is standaard ingeschakeld. Als u daarom Automatisch opnieuw evalueren selecteert schakelt u deze uit. Door opnieuw Automatisch heroverwegen te selecteren, wordt het weer ingeschakeld.
U kunt de werkbalk boven aan het venster Geheugen verbergen of weergeven. U hebt geen toegang tot het veld Adres of andere hulpmiddelen wanneer de werkbalk is verborgen.
De werkbalk in- of uitschakelen.
- Klik met de rechtermuisknop in het venster Geheugen en selecteer Werkbalk weergeven in het contextmenu. De werkbalk wordt weergegeven of verdwijnt, afhankelijk van de vorige status.
Een aanwijzer volgen via het geheugen (C/C++)
In systeemeigen code-apps kunt u registrernamen als live-expressies gebruiken. U kunt bijvoorbeeld de stackpointer gebruiken om de stack te volgen.
Volg een aanwijzer via het geheugen:
Voer in het venster MemoryAddress een aanwijzerexpressie in die zich in het huidige bereik bevindt. Afhankelijk van de taal moet u mogelijk dereferentie toepassen.
Druk op , Enter.
Wanneer u een foutopsporingsopdracht zoals Stapgebruikt, wordt het geheugenadres dat wordt weergegeven in het veld Adres en boven in het venster Geheugen automatisch gewijzigd wanneer de aanwijzer verandert.
Geheugenaanwijzers weergeven (.NET)
Als u de inhoud van een .NET-object wilt weergeven op basis van een geheugenaanwijzer, zoals een adres dat is verkregen uit een heap-momentopname, kunt u dit doen met behulp van {CLR}@Address
notatie. Het adres moet een aanwijzer naar het geheugen zijn, zoals 0x1D102A581B0. Voer de geheugenwijzer in met behulp van {CLR}@Address
notatie in het venster Geheugen veld Adres. U kunt ook dezelfde notatie gebruiken om een horloge toe te voegen met behulp van het venster Controle.
Als u het adres van de geheugenaanwijzer wilt ophalen uit een heap-momentopname, opent u de heapdump, kiest u Debug Managed Memory, waarmee het hulpprogramma Geheugengebruik wordt geopend. Klik met de rechtermuisknop op het object waarin u geïnteresseerd bent en kies Exemplaren weergeven.