onderbrekingspunten Gebruiken in Visual Studio debugger

  • 06/30/2020
  • 12 minuten te lezen
    • M
    • g
    • j
    • v
    • g
    • +8

Breekpunten zijn een van de meest belangrijke debugging technieken in uw developer toolbox. U stelt breekpunten in waar u de uitvoering van de debugger wilt pauzeren. U wilt bijvoorbeeld de status van codevariabelen zien of naar de call stack kijken op een bepaald breekpunt. Zie breekpunten oplossen in de Visual Studio debugger als u een waarschuwing of probleem probeert op te lossen tijdens het gebruik van breekpunten.

opmerking

als u de taak of het probleem kent die u probeert op te lossen, maar u moet weten wat voor breekpunt u wilt gebruiken, zie FAQ – vind uw debugfunctie.

breekpunten instellen in broncode

u kunt een breekpunt instellen op elke regel uitvoerbare code. Bijvoorbeeld, in de volgende C# code, kunt u een breekpunt instellen op de regel code met de variabele toewijzing (int testInt = 1), de for lus, of elke code binnen de for lus. U kunt geen breekpunt instellen op Methode handtekeningen, declaraties voor een naamruimte of klasse, of variabele declaraties als er geen toewijzing en geen getter/setter.

om een breekpunt in de broncode in te stellen, klikt u in de uiterste linkermarge naast een regel code. U kunt ook de regel selecteren en op F9 drukken, Debug > Toggle breekpunt selecteren, of met de rechtermuisknop klikken en breekpunt > breekpunt invoegen selecteren. Het breekpunt verschijnt als een rode stip in de linkermarge.

voor de meeste talen, waaronder C#, worden breekpunten en huidige uitvoerregels automatisch gemarkeerd. Voor C++ – code kunt u markering van breekpunten en huidige regels inschakelen door extra (of Debug) > opties > Debugging > markeer de gehele bronregel voor breekpunten en huidige statement (alleen C++) te selecteren.

Stel een breekpunt

wanneer u debuggen, uitvoering pauzeert op het breekpunt, voordat de code op die regel wordt uitgevoerd. Het breekpunt symbool toont een gele pijl.

bij het breekpunt in het volgende voorbeeld is de waarde van testInt nog steeds 1. De waarde is dus niet veranderd sinds de variabele is geïnitialiseerd (ingesteld op een waarde van 1) omdat het statement in geel nog niet is uitgevoerd.

uitvoering breekpunt gestopt

wanneer de debugger stopt bij het breekpunt, kunt u kijken naar de huidige status van de app, inclusief variabele waarden en de call stack.

hier zijn een paar algemene instructies voor het werken met breekpunten.

  • het breekpunt is een toggle. U kunt erop klikken, op F9 drukken of debug > gebruiken om breekpunt te verwijderen of opnieuw in te voeren.

  • als u een breekpunt wilt uitschakelen zonder het te verwijderen, plaatst u de muisaanwijzer of klikt u er met de rechtermuisknop op en selecteert u breekpunt uitschakelen. Uitgeschakelde breekpunten verschijnen als lege punten in de linkermarge of het venster breekpunten. Als u een breekpunt opnieuw wilt inschakelen, klikt u erop met de muisaanwijzer of met de rechtermuisknop en selecteert u breekpunt inschakelen.

  • stel Voorwaarden en acties in, Voeg labels toe en bewerk ze, of exporteer een breekpunt door er met de rechtermuisknop op te klikken en de juiste opdracht te selecteren, of er met de muis over te gaan en het pictogram Instellingen te selecteren.

breekpunt acties en tracepoints

een tracepoint is een breekpunt dat een bericht naar het uitvoervenster drukt. Een tracepoint kan fungeren als een tijdelijke trace statement in de programmeertaal en pauzeert de uitvoering van code niet. U maakt een tracepoint door een speciale actie in te stellen in het venster Breekpuntinstellingen. Zie tracepoints gebruiken in de Visual Studio debugger voor gedetailleerde instructies.

Breekpuntcondities

u kunt bepalen wanneer en waar een breekpunt wordt uitgevoerd door voorwaarden in te stellen. De voorwaarde kan elke geldige uitdrukking zijn die de debugger herkent. Zie expressies in de debugger voor meer informatie over geldige expressies.

om een breekpuntvoorwaarde in te stellen:

  1. Klik met de rechtermuisknop op het breekpuntsymbool en selecteer Voorwaarden (of druk op Alt + F9, C). Of ga met de muisaanwijzer over het breekpuntsymbool, selecteer het pictogram Instellingen en selecteer vervolgens voorwaarden in het venster Breekpuntinstellingen.

    u kunt ook voorwaarden instellen in het venster breekpunten door met de rechtermuisknop op een breekpunt te klikken en instellingen te selecteren en vervolgens voorwaarden te selecteren.

    Breekpuntinstellingen

  2. selecteer in de vervolgkeuzelijst voorwaardelijke expressie, druk op aantal of Filter en stel de waarde dienovereenkomstig in.

  3. selecteer sluiten of druk op Ctrl + Enter om het venster Breekpuntinstellingen te sluiten. Of selecteer OK in het venster breekpunten om het dialoogvenster te sluiten.

breekpunten met ingestelde voorwaarden verschijnen met een + – symbool in de broncode-en breekpunten-vensters.

Maak een voorwaardelijke expressie

wanneer u voorwaardelijke expressie selecteert, kunt u kiezen tussen twee voorwaarden: is true of wanneer gewijzigd. Kiezen is waar om te breken wanneer de expressie is voldaan, of wanneer gewijzigd om te breken wanneer de waarde van de expressie is veranderd.

in het volgende voorbeeld wordt het breekpunt alleen bereikt als de waarde van testInt 4 is:

Breekpuntconditie is waar

In het volgende voorbeeld wordt het breekpunt alleen geraakt wanneer de waarde van testInt verandert:

breekpunt bij wijziging

Als u een breekpuntvoorwaarde met ongeldige syntaxis instelt, verschijnt er een waarschuwingsbericht. Als u een breekpuntconditie opgeeft met een geldige syntaxis maar ongeldige semantiek, verschijnt er een waarschuwingsbericht bij de eerste keer dat het breekpunt wordt geraakt. In beide gevallen breekt de debugger wanneer deze het ongeldige breekpunt raakt. Het breekpunt wordt alleen overgeslagen als de voorwaarde geldig is en evalueert naar false.

Note

voor het veld wanneer gewijzigd, beschouwt de debugger de eerste evaluatie van de voorwaarde niet als een verandering, dus raakt hij niet het breekpunt bij de eerste evaluatie.

gebruik Object-ID ‘ s in voorwaardelijke expressies (alleen C# en F#)

er zijn momenten waarop u het gedrag van een specifiek object wilt observeren. U wilt bijvoorbeeld weten waarom een object meer dan eens in een collectie is geplaatst. In C # en F# kunt u object-id ‘ s maken voor specifieke voorbeelden van referentietypen en deze gebruiken in breekpuntcondities. De object-ID wordt gegenereerd door de CLR-debugservices (common language runtime) en is gekoppeld aan het object.

om een Object-ID aan te maken:

  1. zet een breekpunt in de code ergens nadat het object is gemaakt.

  2. start debugging, en als de uitvoering pauzeert op het breekpunt, selecteer Debug > Windows > Locals (of druk op Ctrl + Alt + V, L) om het Locals venster te openen.

    Zoek de specifieke object instantie in het Locals venster, klik er met de rechtermuisknop op en selecteer Object ID maken.

    u ziet een $ plus een getal in het Locals venster. Dit is de object-ID.

  3. voeg een nieuw breekpunt toe op het punt dat u wilt onderzoeken; bijvoorbeeld wanneer het object aan de collectie moet worden toegevoegd. Klik met de rechtermuisknop op het breekpunt en selecteer Voorwaarden.

  4. gebruik de Object-ID in het veld voorwaardelijke expressie. Als bijvoorbeeld de variabele item het object is dat aan de verzameling moet worden toegevoegd, selecteert u is true en typt u item == $<n>, waarbij <n> het object-ID-nummer is.

    de uitvoering wordt afgebroken op het moment dat dat object aan de verzameling wordt toegevoegd.

    om het object-ID te verwijderen, klikt u met de rechtermuisknop op de variabele in het Locals-venster en selecteert u Object-ID verwijderen.

opmerking

Object-ID ‘ s creëren zwakke referenties en voorkomen niet dat het object vuilnis wordt verzameld. Ze zijn alleen geldig voor de huidige debugsessie.

Set a hit count condition

als u vermoedt dat een lus in uw code zich begint te misdragen na een bepaald aantal iteraties, kunt u een breekpunt Instellen om de uitvoering te stoppen na dat aantal hits, in plaats van herhaaldelijk op F5 te drukken om die iteratie te bereiken.

onder voorwaarden in het venster Breekpuntinstellingen, selecteert u Hit Count en specificeert u vervolgens het aantal herhalingen. In het volgende voorbeeld is het breekpunt ingesteld op elke andere iteratie:

Breakpoint hit count

Stel een filtervoorwaarde

u kunt een breakpoint beperken tot brand alleen op bepaalde apparaten, of in bepaalde processen en threads.

selecteer onder voorwaarden in het venster Breekpuntinstellingen Filter en voer een of meer van de volgende expressies in:

  • MachineName = “name”
  • ProcessId = value
  • ProcessName = “name”
  • Threadd = value
  • ThreadName = “name”

sluit tekenreekswaarden in dubbele aanhalingstekens. U kunt clausules combineren met & (AND), || (OR), ! (NOT) en haakjes.

functie-breekpunten instellen

u kunt de uitvoering onderbreken wanneer een functie wordt aangeroepen. Dit is bijvoorbeeld handig als u de functienaam kent, maar niet de locatie ervan. Het is ook handig als je functies met dezelfde naam hebt en je wilt ze allemaal afbreken (zoals overbelaste functies of functies in verschillende projecten).

om een functie-breekpunt in te stellen:

  1. Selecteer Debug > Nieuw breekpunt > functie breekpunt, of druk op Ctrl + K, B.

    u kunt ook nieuw > functie-breekpunt selecteren in het Breekpuntvenster.

  2. in de nieuwe functie breekpunt dialoogvenster, voer de functienaam in de functienaam doos.

    om de functiespecificatie te beperken:

    • gebruik de volledig gekwalificeerde functienaam.

      voorbeeld: Namespace1.ClassX.MethodA()

    • voeg de parametertypen van een overbelaste functie toe.

      voorbeeld: MethodA(int, string)

    • gebruik de’!’symbool om de module aan te geven.

      voorbeeld: App1.dll!MethodA

    • gebruik de context operator in native C++.

      {function, , }

      voorbeeld: {MethodA, , App1.dll}+2

  3. kies in het vervolgkeuzemenu taal de taal van de functie.

  4. selecteer OK.

een functie-breekpunt instellen met behulp van een geheugenadres (alleen standaard C++)

u kunt het adres van een object gebruiken om een functie-breekpunt in te stellen op een methode die wordt aangeroepen door een specifieke instantie van een klasse. Bijvoorbeeld, gegeven een adresseerbaar object van het type my_class, kunt u een functie-breekpunt instellen op de my_method methode die instantie aanroept.

  1. zet een breekpunt ergens nadat de instantie van de klasse is geïnstalleerd.

  2. zoek het adres van de instantie (bijvoorbeeld 0xcccccccc).

  3. Selecteer Debug > Nieuw breekpunt > functie breekpunt, of druk op Ctrl + K, B.

  4. voeg het volgende toe aan de functienaam vak en selecteer C++ taal.

    ((my_class *) 0xcccccccc)->my_method

data breekpunten instellen (. net Core 3.0 of hoger)

data breekpunten breken uitvoering wanneer de eigenschap van een specifiek object verandert.

om een data-breekpunt in te stellen

  1. in een. net Core project, start debugging, en wacht tot een breekpunt is bereikt.

  2. klik in het venster Auto ‘ s, kijken of Locals met de rechtermuisknop op een eigenschap en selecteer breken wanneer waarde verandert in het contextmenu.

    Managed Data Breakpoint

data breekpunten in. net Core zal niet werken voor:

  • eigenschappen die niet uitbreidbaar zijn in het tooltip -, Locals -, Autos-of kijkvenster
  • statische variabelen
  • klassen met het Debuggertypeproxy-attribuut
  • velden binnen structs

set data breakpoints (alleen standaard C++)

Data breakpoints breken de uitvoering wanneer een waarde die is opgeslagen op een opgegeven geheugenadres verandert. Als de waarde wordt gelezen maar niet gewijzigd, wordt de uitvoering niet verbroken.

om een data-breekpunt in te stellen:

  1. in een C++ project, start debugging, en wacht tot een breekpunt is bereikt. Kies in het DebugMenu Nieuw breekpunt > Data breekpunt.

    u kunt ook nieuw > data-breekpunt selecteren in het venster breekpunten of met de rechtermuisknop op een item klikken in het venster Auto ‘ s, Watch of Locals en breken selecteren wanneer waarde verandert in het contextmenu.

  2. typ in het vak Adres een geheugenadres of een expressie die evalueert naar een geheugenadres. Typ bijvoorbeeld &avar om te breken wanneer de inhoud van de variabele avar verandert.

  3. selecteer in de dropdown Byte Count het aantal bytes dat de debugger moet bekijken. Als u bijvoorbeeld 4 selecteert, zal de debugger de vier bytes bekijken die beginnen bij &avar en breken als een van deze bytes van waarde verandert.

data breekpunten werken niet onder de volgende voorwaarden:

  • een proces dat niet wordt debugged schrijft naar de geheugenlocatie.
  • de geheugenlocatie wordt gedeeld tussen twee of meer processen.
  • de geheugenlocatie wordt binnen de kernel bijgewerkt. Als het geheugen bijvoorbeeld wordt doorgegeven aan de 32-bit Windows ReadFile – functie, wordt het geheugen bijgewerkt vanuit de kernelmodus, zodat de debugger de update niet breekt.
  • waarbij de watch-expressie groter is dan 4 bytes op 32-bits hardware en 8 bytes op 64-bits hardware. Dit is een beperking van de X86-architectuur.

opmerking

  • data breekpunten zijn afhankelijk van specifieke geheugenadressen. Het adres van een variabele verandert van de ene debugsessie naar de volgende, zodat gegevensbreakpunten automatisch worden uitgeschakeld aan het einde van elke debugsessie.

  • als u een data-breekpunt instelt op een lokale variabele, blijft het breekpunt ingeschakeld wanneer de functie eindigt, maar het geheugenadres is niet langer van toepassing, dus het gedrag van het breekpunt is onvoorspelbaar. Als u een data-breekpunt instelt op een lokale variabele, moet u het breekpunt verwijderen of uitschakelen voordat de functie eindigt.

breekpunten beheren in het breekpunten-venster

u kunt het breekpunten-venster gebruiken om alle breekpunten in uw oplossing te zien en te beheren. Deze centrale locatie is vooral handig in een grote oplossing, of voor complexe debug-scenario ‘ s waar breekpunten van cruciaal belang zijn.

in het venster breekpunten kunt u zoeken, sorteren, filteren, in – /uitschakelen of breekpunten verwijderen. U kunt ook Voorwaarden en acties instellen, of een nieuwe functie of data-breekpunt toevoegen.

om het venster breekpunten te openen, selecteert u Debug > Windows > breekpunten, of drukt u op Ctrl+Alt+B.

breekpunten venster

om de kolommen te selecteren die in het venster breekpunten moeten worden weergegeven, selecteert u kolommen weergeven. Selecteer een kolomkop om de lijst met breekpunten op die kolom te sorteren.

Breekpuntlabels

u kunt labels gebruiken om de lijst met breekpunten in het Breekpuntvenster te sorteren en te filteren.

  1. om een label aan een breekpunt toe te voegen, klikt u met de rechtermuisknop op het breekpunt in de broncode of het venster breekpunten en selecteert u labels bewerken. Voeg een nieuw label toe of kies een bestaand label en selecteer vervolgens OK.
  2. Sorteer de lijst met breekpunten in het venster breekpunten door de Labels, Voorwaarden of andere kolomkoppen te selecteren. U kunt de weer te geven kolommen selecteren door kolommen weergeven in de werkbalk te selecteren.

breekpunten exporteren en importeren

om de status en locatie van uw breekpunten op te slaan of te delen, kunt u ze exporteren of importeren.

  • als u een enkel breekpunt naar een XML-bestand wilt exporteren, klikt u met de rechtermuisknop op het breekpunt in het venster broncode of breekpunten en selecteert u exporteren of exporteren geselecteerd. Selecteer een exportlocatie en selecteer vervolgens opslaan. De standaardlocatie is de oplossingenmap.
  • om meerdere breekpunten te exporteren, selecteert u in het venster breekpunten de vakjes naast de breekpunten, of voert u zoekcriteria in in het zoekveld. Selecteer het pictogram Alle breekpunten exporteren die overeenkomen met het huidige zoekcriteria en sla het bestand op.
  • om alle breekpunten te exporteren, selecteert u alle kaders en laat het zoekveld leeg. Selecteer het pictogram Alle breekpunten exporteren die overeenkomen met het huidige zoekcriteria en sla het bestand op.
  • om breekpunten te importeren, selecteert u in het venster breekpunten de breekpunten importeren van een bestandspictogram, navigeert u naar de XML-bestandslocatie en selecteert u Openen.

breekpunten instellen vanuit debuggervensters

u kunt ook breekpunten instellen vanuit de Call Stack en Debuggervensters demonteren.

Stel een breekpunt in het Call Stack venster

om te breken bij de instructie of regel waarnaar een aanroepende functie terugkeert.u kunt een breekpunt instellen in het Call Stack venster.

om een breekpunt in het venster Call Stack in te stellen:

  1. om het Call Stack venster te openen, moet u worden gepauzeerd tijdens het debuggen. Selecteer Debug > Windows > Call Stack, of druk op Ctrl + Alt + C.

  2. klik in het venster Call Stack met de rechtermuisknop op de aanroepfunctie en selecteer breekpunt > breekpunt invoegen, of druk op F9.

    een breekpunt symbool verschijnt naast de functie aanroep naam in de linker marge van de aanroep stack.

het breekpunt van de aanroepstack verschijnt in het Breekpuntvenster als een adres, met een geheugenlocatie die overeenkomt met de volgende uitvoerbare instructie in de functie.

de debugger breekt bij de instructie.

voor meer informatie over de call stack, zie How to: Use the Call Stack window.

voor het visueel traceren van breekpunten tijdens het uitvoeren van code, zie Kaartmethoden op de call stack tijdens het debuggen.

een breekpunt instellen in het Demontagevenster

  1. om het demontagevenster te openen, moet u worden gepauzeerd tijdens het debuggen. Selecteer Debug > Windows > Demontage, of druk op Ctrl + Alt + D.

  2. klik in het Demontagevenster in de linkermarge van de instructie die u wilt afbreken. U kunt het ook selecteren en op F9 drukken, of met de rechtermuisknop klikken en breekpunt > breekpunt invoegen selecteren.

zie ook

  • Wat is debuggen?
  • Schrijf betere C # code met behulp van Visual Studio
  • eerste blik op debuggen
  • problemen met breekpunten oplossen in de Visual Studio debugger

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.