Navigeren door code met behulp van het Visual Studio-foutopsporingsprogramma
Met het foutopsporingsprogramma van Visual Studio kunt u door code navigeren om de status van een app te inspecteren en de uitvoeringsstroom weer te geven. Dit wordt ook wel codestapgenoemd. U kunt sneltoetsen, foutopsporingsopdrachten, onderbrekingspunten en andere functies gebruiken om snel toegang te krijgen tot de code die u wilt onderzoeken. Door meer vertrouwd te raken met navigatieopdrachten en snelkoppelingen voor foutopsporingsprogramma's, kunt u app-problemen sneller en eenvoudiger vinden en oplossen. Zie de sectie Foutopsporing in sneltoetsen voor een lijst met de meest voorkomende sneltoetsen met betrekking tot codenavigatie en foutopsporing.
Notitie
Als u geen kennis hebt van het opsporen van fouten in code, kunt u foutopsporing lezen voor absolute beginners en technieken en hulpprogramma's voor foutopsporing voordat u dit artikel leest.
Foutopsporing starten en de onderbrekingsmodus activeren
Sommige navigatieopdrachten starten uw app en voegen automatisch het foutopsporingsprogramma toe. Uw app pauzeert op een specifieke regel code aan de hand van de opdracht die u gebruikte om de navigatie te starten, waarna u de onderbrekingsstand invoert (dat wil zeggen, uw app is gepauzeerd in de debugger).
In de onderbrekingsmodus wordt de uitvoering van apps onderbroken terwijl functies, variabelen en objecten in het geheugen blijven. Wanneer het foutopsporingsprogramma zich in de onderbrekingsmodus bevindt, kunt u door uw code navigeren. Er zijn twee veelgebruikte manieren om snel de onderbrekingsmodus in te schakelen:
een onderbrekingspunt instellen en de app starten.
Ga naar een specifieke locatie of functie.
In de code-editor van Visual Studio kunt u bijvoorbeeld de opdracht Uitvoeren naar cursor gebruiken om de app te starten met het foutopsporingsprogramma eraan gekoppeld, en de onderbrekingsmodus te activeren. Vervolgens kunt u stapopdrachten gebruiken om door de code te navigeren.
Code stepping opdrachten kunnen worden gebruikt om uw app te starten, maar worden vaker ingezet nadat u de onderbrekingsmodus hebt ingeschakeld.
Navigeren in code tijdens de onderbrekingsmodus
Sommige navigatieopdrachten worden meestal gebruikt in de pauzestand (dat wil zeggen, terwijl u gepauzeerd bent in de debugger).
Code-stappen opdrachten worden meestal gebruikt in de onderbrekingsmodus.
Sommige opdrachten zoals Uitvoeren om op te klikken, kunnen alleen worden gebruikt in de onderbrekingsmodus.
Foutopsporing (debuggen) en onderbrekingsmodus
Wanneer u zich in de onderbrekingsmodus bevindt, kunt u verschillende opdrachten gebruiken om door uw code te navigeren. U kunt de waarden van variabelen onderzoeken om te zoeken naar schendingen of bugs. Voor sommige projecttypen kunt u ook aanpassingen aanbrengen aan de app wanneer u de onderbrekingsmodus gebruikt.
De meeste foutopsporingsprogrammavensters, zoals de Modules en Watch-vensters, zijn alleen beschikbaar wanneer het foutopsporingsprogramma is gekoppeld aan uw app. Sommige functies voor foutopsporingsprogramma's, zoals het weergeven van variabele waarden in het venster Locals of het evalueren van expressies in het venster Watch, zijn alleen beschikbaar wanneer het foutopsporingsprogramma is onderbroken (dat wil gezegd in de onderbrekingsmodus).
Notitie
Als u doordringt in code die geen bron- of symboolbestanden (.pdb) heeft geladen, toont de debugger een pagina Bronbestanden Niet Gevonden of Symbolen Niet Gevonden, waarmee u de bestanden kunt vinden en laden. Zie Symbool opgeven (.pdb) en bronbestanden. Als u het symbool of de bronbestanden niet kunt laden, kunt u nog steeds fouten opsporen in de assembly-instructies in het venster Demontage.
Code stap voor stap uitvoeren
codestap verwijst naar het uitvoeren van uw toepassingscode één voor één instructie, waarbij het foutopsporingsprogramma is bijgevoegd. Met de stapopdrachten voor foutopsporing kunt u de effecten van elke instructie bekijken en meer informatie vinden over de uitvoeringsstroom.
Duik in de code
Als u wilt stoppen met elke instructie wanneer u foutopsporing uitvoert, gebruikt u Foutopsporing>Stap inof selecteert u F11-.
Het foutopsporingsprogramma doorloopt code-instructies, niet fysieke regels. Een if
-clausule kan bijvoorbeeld op één regel staan.
Maar wanneer u bij deze regel komt, behandelt het foutopsporingsprogramma de voorwaarde als één stap en het gevolg als een andere. In het voorgaande voorbeeld is de voorwaarde waar.
Bij een geneste functieaanroep voert Stap in uit naar de meest diep geneste functie. Als u bijvoorbeeld Stap in gebruikt voor een oproep zoals Func1(Func2())
, stapt de debugger in de functie Func2
.
Tip
Terwijl u elke regel code uitvoert, kunt u de muisaanwijzer over variabelen bewegen om hun waarden te zien, of de Locals en Watch vensters gebruiken om de waarden te wijzigen. U kunt de -aanroepstack ook visueel traceren terwijl u in functies navigeert. (Alleen voor Visual Studio Enterprise, zie Methoden in kaart brengen op de aanroepstack bij het debuggen.)
Doorloop code en sla enkele functies over
Het is mogelijk dat u niet om een functie geeft wanneer u foutopsporing uitvoert. Of misschien weet u dat bepaalde code werkt, zoals goed geteste bibliotheekcode. U kunt de volgende opdrachten gebruiken om code over te slaan wanneer u stap voor stap door de code gaat. De functies worden nog steeds uitgevoerd, maar het foutopsporingsprogramma slaat ze over.
Toetsenbordopdracht | Debugmenu-opdracht | Beschrijving |
---|---|---|
F10 | Stap over | Als de huidige regel een functieaanroep bevat, Step Over de code uitvoert en vervolgens de uitvoering bij de eerste regel code onderbreekt nadat de aangeroepen functie is geretourneerd. |
Shift+F11 | uitstappen | Stap uit gaat door met het uitvoeren van code en onderbreekt de uitvoering wanneer de huidige functie retourneert. Het foutopsporingsprogramma slaat de huidige functie over. |
Uitvoeren naar een specifieke locatie of functie
Mogelijk wilt u liever direct naar een specifieke locatie of functie gaan wanneer u precies weet welke code u wilt bekijken of als u weet waar u wilt beginnen met debuggen.
- Het instellen van een onderbrekingspunt is het beste als u denkt dat u het onderbrekingspunt opnieuw wilt gebruiken.
- Andere methoden zijn voor het gemak en zijn vergelijkbaar met het instellen van een tijdelijk onderbrekingspunt.
Ren naar een breakpunt in de code
Als u een eenvoudig onderbrekingspunt in uw code wilt instellen, selecteert u de marge uiterst links naast de coderegel waar u de uitvoering wilt onderbreken. U kunt ook de regel selecteren en vervolgens F9selecteren, Debug>Onderbrekingspunt in-/uitschakelen, of met de rechtermuisknop klikken en Breakpoint>Onderbrekingspunt toevoegen. Het onderbrekingspunt wordt weergegeven als een rode stip in de linkermarge naast de coderegel. Het foutopsporingsprogramma onderbreekt de uitvoering vlak voordat de regel wordt uitgevoerd.
Onderbrekingspunten in Visual Studio bieden een uitgebreide set functionaliteit, zoals voorwaardelijke onderbrekingspunten en traceringen. Zie Onderbrekingspunten gebruikenvoor meer informatie.
Ga naar een onderbrekingspunt van een functie
U kunt instellen dat het foutopsporingsprogramma wordt uitgevoerd totdat deze een opgegeven functie bereikt. U kunt de functie op naam opgeven of u kunt deze kiezen in de aanroepstack.
Een onderbrekingspunt voor een functie opgeven op naam:
Selecteer Debug>Nieuw onderbrekingspunt>Functieonderbrekingspunt.
Voer in het dialoogvenster Nieuw functie-onderbrekingspunt de naam van de functie in en selecteer de taal:
Selecteer OK-.
Als de functie overbelast is of zich in meer dan één naamruimte bevindt, kunt u het gewenste item kiezen in het onderbrekingspunten venster:
Een functieonderbrekingspunt selecteren in de aanroepstack:
Open het venster Aanroepstapel voor foutopsporing door Foutopsporing>Windows>Aanroepstapelte selecteren.
Klik in het venster Aanroepstack met de rechtermuisknop op een functie en selecteer Run To Cursorof selecteer Ctrl+F10.
Uitvoeren naar een cursorlocatie
Uitvoeren naar de cursorlocatie: selecteer in de broncode of in het venster Aanroepstack de regel waar u de code-uitvoering wilt onderbreken, klik met de rechtermuisknop en selecteer Run To Cursorof selecteer Ctrl+F10. Het selecteren van run to cursor is vergelijkbaar met het instellen van een tijdelijke onderbrekingspunt.
Forceer uitvoeren naar cursorlocatie
Als u naar het locatie van de cursor wilt gaan, selecteert u in de broncode of het venster Call Stack de regel waarop u wilt onderbreken, klikt u met de rechtermuisknop en selecteert u Forceren om naar de cursor te gaan. Als u Uitvoeren naar cursor forceren selecteert, worden eventuele onderbrekingspunten en uitzonderingen voor de eerste kans overgeslagen totdat het foutopsporingsprogramma de coderegel bereikt waar de cursor zich bevindt.
Klikken om te starten
Terwijl het foutopsporingsprogramma is onderbroken, kunt u de muisaanwijzer op een instructie in de broncode of in het venster Demonteren bewegen en de Uitvoering uitvoeren selecteren om hier groene pijl te selecteren. Het gebruik van Run to Click is vergelijkbaar met het instellen van een tijdelijk onderbrekingspunt.
Notitie
Run to Click is beschikbaar vanaf Visual Studio 2017.
Geforceerd klikken
Terwijl de debugger is gepauzeerd, kunt u de muisaanwijzer over een instructie in de broncode bewegen door de toets Shift ingedrukt te houden en vervolgens de optie Uitvoering forceren naar hier te selecteren (the dubbele groene pijl). Wanneer u deze optie kiest, wordt het foutopsporingsprogramma van Visual Studio door de toepassing gekoppeld en pauzeert deze bij de cursorlocatie. Eventuele onderbrekingspunten en uitzonderingen voor de eerste kans die tijdens de uitvoering worden gevonden, worden tijdelijk uitgeschakeld.
Notitie
forceren uitvoeren om op te klikken, is beschikbaar vanaf Visual Studio 2022.
Handmatig code onderverdelen
Als u naar de volgende beschikbare regel code in een actieve app wilt onderbreken, selecteer dan Debuggen>Alles onderbreken, of selecteer Ctrl+Alt+Onderbreken.
Fouten opsporen in niet-gebruikerscode
Standaard probeert het foutopsporingsprogramma alleen fouten in uw app-code op te sporen door een instelling met de naam Just My Codein te schakelen. Zie Just My Codevoor meer informatie over hoe deze functie werkt voor verschillende projecttypen en talen en hoe u deze kunt aanpassen.
Als u frameworkcode, bibliotheekcode van derden of systeemaanroepen wilt bekijken tijdens foutopsporing, kunt u Just My Code uitschakelen. Schakel in Extra (of Foutopsporing) >Opties>Foutopsporinghet selectievakje Just My Code inschakelen uit. Wanneer Just My Code is uitgeschakeld, wordt niet-gebruikerscode weergegeven in de foutopsporingsprogrammavensters en kan het foutopsporingsprogramma in de niet-gebruikerscode stappen.
Notitie
"Just My Code wordt niet ondersteund voor deviceprojecten."
Debug de systeemcode
Als u foutopsporingssymbolen voor Microsoft-systeemcode hebt geladen en Just My Code hebt uitgeschakeld, kunt u net als elke andere aanroep een systeemaanroep uitvoeren.
Vanaf Visual Studio 2022 versie 17.7 kunt u .NET-code automatisch compileren wanneer u in externe code stapt zonder dat u handmatig foutopsporingssymbolen hoeft te laden. Zie Broncode genereren van .NET-assembly's tijdens foutopsporingvoor meer informatie.
Zie Locatie van symboolbestanden en laadopties configurerenvoor meer informatie over het laden van Microsoft-symbolen.
Symbolen laden voor een specifiek systeemonderdeel:
Open tijdens het opsporen van fouten het venster Modules door Foutopsporing te selecteren>Windows>Modules of door op Ctrl+Alt+Ute drukken.
In het venster Modules kunt u zien welke modules symbolen hebben geladen in de kolom Symboolstatus. Klik met de rechtermuisknop op de module waarvoor u symbolen wilt laden en selecteer Symbolen laden.
Verken eigenschappen en operators in beheerde code
Het foutopsporingsprogramma stapt standaard over eigenschappen en operators heen in beheerde code. In de meeste gevallen biedt dit gedrag een betere foutopsporingservaring. Om toegang te krijgen tot eigenschappen of operators, selecteert u Foutopsporing>Opties. Schakel op de pagina Foutopsporing>Algemeen het selectievakje Stap over eigenschappen en operators (alleen beheerd) uit.
De aanwijzer verplaatsen om de uitvoeringsstroom te wijzigen
U kunt de volgende statement wijzigen die zal worden uitgevoerd door de gele uitvoeringswijzer te verplaatsen. U kunt deze functie gebruiken in de onderbrekingsmodus.
Dit is een geavanceerde functie voor foutopsporingsprogramma's. Voor meer informatie, zie Uitvoeringspointer verplaatsen.