Verwenden von Breakpoints im Visual Studio-DebuggerUse breakpoints in the Visual Studio debugger

Breakpoints sind eine der wichtigsten Debuggingtechniken in der Toolbox Ihres Entwicklers.Breakpoints are one of the most important debugging techniques in your developer's toolbox. Haltepunkte legen Sie fest, wo Sie die Debugger-Ausführung anhalten möchten.You set breakpoints wherever you want to pause debugger execution. Beispielsweise möchten Sie möglicherweise den Status der Code Variablen anzeigen oder die aufrufsstapel an einem bestimmten Haltepunkt sehen.For example, you may want to see the state of code variables or look at the call stack at a certain breakpoint. Wenn Sie versuchen, eine Warnung oder ein Problem zu beheben, während Sie Breakpoints verwenden, finden Sie weitere Informationen unter Problembehandlung bei Breakpoints im Visual Studio-Debugger.If you are trying to resolve a warning or issue while using breakpoints, see Troubleshoot breakpoints in the Visual Studio debugger.

Note

Wenn Sie die Aufgabe oder das Problem kennen, die Sie lösen möchten, aber wissen müssen, welche Art von Haltepunkt Sie verwenden möchten, finden Sie untersuchen der debugaufgabe Weitere Informationen.If you know the task or problem you're trying to solve, but you need to know what kind of breakpoint to use, see Find your debugging task.

Festlegen von Breakpoints im QuellcodeSet breakpoints in source code

Sie können einen Haltepunkt für jede beliebige Zeile mit ausführbarem Code festlegen.You can set a breakpoint on any line of executable code. Im folgenden C# Code können Sie z. b. einen Haltepunkt für die Variablen Deklaration, diefor-Schleife oder einen beliebigen Code in derfor-Schleife festlegen.For example, in the following C# code, you could set a breakpoint on the variable declaration, the for loop, or any code inside the for loop. Es ist nicht möglich, einen Haltepunkt in den Namespace-oder Klassen Deklarationen oder in der Methoden Signatur festzulegen.You can't set a breakpoint on the namespace or class declarations, or on the method signature.

Um einen Haltepunkt im Quellcode festzulegen, klicken Sie auf den äußersten linken Rand neben einer Codezeile.To set a breakpoint in source code, click in the far left margin next to a line of code. Sie können auch die Zeile auswählen und F9drücken, Debuggen > halte Punkt umschaltenauswählen oder mit der rechten Maustaste klicken und halte Punkt > halte Punkt einfügenauswählen.You can also select the line and press F9, select Debug > Toggle Breakpoint, or right-click and select Breakpoint > Insert breakpoint. Der Haltepunkt wird als roter Punkt am linken Rand angezeigt.The breakpoint appears as a red dot in the left margin.

Für die meisten Sprachen C#, einschließlich, werden Breakpoint und Current Execution Lines automatisch hervorgehoben.For most languages including C#, breakpoint and current execution lines are automatically highlighted. Für C++ Code können Sie die Hervorhebung von Haltepunkt-und aktuellen Zeilen aktivieren, indem Sie Extras (oder Debuggen) > Optionen > Debuggen auswählen > gesamte Quellzeile für Haltepunkte und aktuell markieren. -AnweisungC++ (nur) .For C++ code, you can turn on highlighting of breakpoint and current lines by selecting Tools (or Debug) > Options > Debugging > Highlight entire source line for breakpoints and current statement (C++ only).

Festlegen eines BreakpointsSet a breakpoint

Beim Debuggen wird die Ausführung am Haltepunkt angehalten, bevor der Code in dieser Zeile ausgeführt wird.When you debug, execution pauses at the breakpoint, before the code on that line is executed. Das breakpointsymbol zeigt einen gelben Pfeil.The breakpoint symbol shows a yellow arrow.

Am Haltepunkt im folgenden Beispiel ist der Wert von testInt immer noch 1.At the breakpoint in the following example, the value of testInt is still 1. Daher wurde der Wert nicht geändert, da die Variable initialisiert (auf den Wert 1 festgelegt wurde), da die Anweisung in gelb noch nicht ausgeführt wurde.So, the value hasn't changed since the variable was initialized (set to a value of 1) because the statement in yellow hasn't yet executed.

Breakpoint-Ausführung beendetBreakpoint execution stopped

Wenn der Debugger am Haltepunkt angehalten wird, können Sie den aktuellen Status der APP, einschließlich der Variablen Werte und der- aufrufsstapel, überprüfen.When the debugger stops at the breakpoint, you can look at the current state of the app, including variable values and the call stack.

Im folgenden finden Sie einige allgemeine Anweisungen zum Arbeiten mit Breakpoints.Here are a few general instructions for working with breakpoints.

  • Der Breakpoint ist eine UMSCHALT Fläche.The breakpoint is a toggle. Sie können darauf klicken, F9drücken oder den halte Punkt mit Debuggen > ein-und ausschalten, um ihn zu löschen oder erneut einzufügen.You can click it, press F9, or use Debug > Toggle Breakpoint to delete or reinsert it.

  • Um einen Haltepunkt zu deaktivieren, ohne ihn zu löschen, zeigen Sie mit der Maus darauf, oder klicken Sie mit der rechten Maustaste darauf und wählen halte Punkt deaktivierenTo disable a breakpoint without deleting it, hover over or right-click it, and select Disable breakpoint. Deaktivierte Breakpoints werden im linken Rand oder im Fenster Breakpoints als leere Punkte angezeigt.Disabled breakpoints appear as empty dots in the left margin or the Breakpoints window. Um einen Haltepunkt wieder zu aktivieren, zeigen Sie mit der Maus darauf, oder klicken Sie mit der rechten Maustaste, und wählen Sie halte Punkt aktivieren.To re-enable a breakpoint, hover over or right-click it, and select Enable breakpoint.

  • Legen Sie Bedingungen und Aktionen fest, fügen Sie Bezeichnungen hinzu, und bearbeiten Sie Sie, oder exportieren Sie einen Haltepunkt, indem Sie mit der rechten Maustaste darauf klicken und den entsprechenden Befehl auswählen oder darauf zeigen und das Einstellungs Symbol auswählen.Set conditions and actions, add and edit labels, or export a breakpoint by right-clicking it and selecting the appropriate command, or hovering over it and selecting the Settings icon.

Haltepunktaktionen und AblaufverfolgungspunkteBreakpoint actions and tracepoints

Beim Ablaufverfolgungspunkt handelt es sich um einen Haltepunkt, der eine Meldung im Fenster Ausgabe ausgibt.A tracepoint is a breakpoint that prints a message to the Output window. Ein Ablauf Verfolgungs Punkt kann wie eine temporäre Ablauf Verfolgungs Anweisung in der Programmiersprache agieren und hält die Ausführung von Code nicht an.A tracepoint can act like a temporary trace statement in the programming language and does not pause the execution of code. Sie erstellen einen Ablauf Verfolgungs Punkt, indem Sie im Fenster "halte Punkt Einstellungen " eine spezielle Aktion festlegen.You create a tracepoint by setting a special action in the Breakpoint Settings window. Ausführliche Anweisungen finden Sie unter Verwenden von Ablauf Verfolgungs Punkten im Visual Studio-Debugger.For detailed instructions, see Use tracepoints in the Visual Studio debugger.

HaltepunktbedingungenBreakpoint conditions

Sie können steuern, wann und wo ein Haltepunkt ausgeführt wird, indem Sie Bedingungen festlegen.You can control when and where a breakpoint executes by setting conditions. Die Bedingung kann ein beliebiger gültiger Ausdruck sein, der vom Debugger erkannt wird.The condition can be any valid expression that the debugger recognizes. Weitere Informationen zu gültigen Ausdrücken finden Sie unter Expressions in the Debugger (Ausdrücke im Debugger).For more information about valid expressions, see Expressions in the debugger.

So legen Sie eine Haltepunkt Bedingung fest:To set a breakpoint condition:

  1. Klicken Sie mit der rechten Maustaste auf das Haltepunkt Symbol, und wählen Sie BedingungenRight-click the breakpoint symbol and select Conditions. Oder zeigen Sie auf das Haltepunkt Symbol, wählen Sie das Symbol " Einstellungen " aus, und wählen Sie dann im Fenster "halte Punkt Einstellungen " Bedingungen aus.Or hover over the breakpoint symbol, select the Settings icon, and then select Conditions in the Breakpoint Settings window.

    Sie können auch Bedingungen im Fenster Breakpoints festlegen, indem Sie mit der rechten Maustaste auf einen Haltepunkt klicken und Einstellungenauswählen und dann Bedingungenauswählen.You can also set conditions in the Breakpoints window by right-clicking a breakpoint and selecting Settings, and then selecting Conditions.

    Haltepunkt EinstellungenBreakpoint settings

  2. Wählen Sie in der Dropdown Liste bedingter Ausdruck, Treffer Anzahloder Filteraus, und legen Sie den Wert entsprechend fest.In the dropdown, select Conditional Expression, Hit Count, or Filter, and set the value accordingly.

  3. Wählen Sie Schließen aus, oder drücken Sie STRG+Eingabe Taste, um das Fenster halte Punkt Einstellungen zu schließen.Select Close or press Ctrl+Enter to close the Breakpoint Settings window. Oder wählen Sie im Fenster Breakpoints die Option OK aus, um das Dialogfeld zu schließen.Or, from the Breakpoints window, select OK to close the dialog.

Haltepunkte mit festgelegten Bedingungen werden in den Fenstern Quellcode und Breakpoints mit einem + Symbol angezeigt.Breakpoints with conditions set appear with a + symbol in the source code and Breakpoints windows.

Erstellen eines Bedingungs AusdrucksCreate a conditional expression

Wenn Sie Bedingungs Ausdruckauswählen, können Sie zwischen zwei Bedingungen wählen: ist true oder bei Änderung.When you select Conditional Expression, you can choose between two conditions: Is true or When changed. Wählen Sie true aus, um die Unterbrechung zu unterbrechen, wenn der Ausdruck erfüllt ist, oder, Wenn der Wert des Ausdrucks geändert wurde.Choose Is true to break when the expression is satisfied, or When changed to break when the value of the expression has changed.

Im folgenden Beispiel wird der Breakpoint nur dann getroffen, wenn der Wert von testInt 4ist:In the following example, the breakpoint is hit only when the value of testInt is 4:

![Haltepunkt Bedingung ist "true"](../debugger/media/breakpointconditionistrue.png "Haltepunkt ist "true"")Breakpoint condition is true

Im folgenden Beispiel wird der Breakpoint nur dann getroffen, wenn sich der Wert testInt ändert:In the following example, the breakpoint is hit only when the value of testInt changes:

Haltepunkt bei ÄnderungBreakpoint When changed

Wenn Sie eine Haltepunktbedingung mit ungültiger Syntax festlegen, wird sofort eine Warnmeldung angezeigt.If you set a breakpoint condition with invalid syntax, a warning message appears. Wenn Sie eine Haltepunktbedingung mit gültiger Syntax aber ungültiger Semantik angeben, wird beim ersten Erreichen des Haltepunkts eine Warnmeldung angezeigt.If you specify a breakpoint condition with valid syntax but invalid semantics, a warning message appears the first time the breakpoint is hit. In beiden Fällen wird der Debugger unterbrochen, wenn er auf den ungültigen Breakpoint trifft.In either case, the debugger breaks when it hits the invalid breakpoint. Der Haltepunkt wird nur übersprungen, wenn die Bedingung gültig ist mit falsebewertet wird.The breakpoint is skipped only if the condition is valid and evaluates to false.

Note

Das Verhalten des Felds Bei Änderung unterscheidet sich je nach Programmiersprache.The behavior of the When changed field is different for different programming languages.

  • Bei System eigenem Code wird die erste Auswertung der Bedingung vom Debugger nicht als Änderung betrachtet. der Haltepunkt bei der ersten Auswertung wird daher nicht gefunden.For native code, the debugger doesn't consider the first evaluation of the condition to be a change, so doesn't hit the breakpoint on the first evaluation.
  • Bei verwaltetem Code trifft der Debugger den Haltepunkt bei der ersten Auswertung, nachdem geändert ausgewählt wurde.For managed code, the debugger hits the breakpoint on the first evaluation after When changed is selected.

Verwenden von Objekt-IDs in bedingtenC# Ausdrücken F# (nur und)Use Object IDs in conditional expressions (C# and F# only)

Es gibt Zeiten, in denen Sie das Verhalten eines bestimmten Objekts beobachten möchten.There are times when you want to observe the behavior of a specific object. Beispielsweise können Sie herausfinden, warum ein Objekt mehrmals in eine Auflistung eingefügt wurde.For example, you might want to find out why an object was inserted into a collection more than once. In C# und F# können Sie Objekt-IDs für bestimmte Instanzen von Verweistypen erstellen und in Haltepunktbedingungen verwenden.In C# and F#, you can create object IDs for specific instances of reference types, and use them in breakpoint conditions. Die Objekt-ID wird von den Debugdiensten der CLR (Common Language Runtime) generiert und dem Objekt zugeordnet.The object ID is generated by the common language runtime (CLR) debugging services and associated with the object.

So erstellen Sie eine Objekt-ID:To create an Object ID:

  1. Legen Sie einen Haltepunkt im Code fest, nachdem das Objekt erstellt wurde.Set a breakpoint in the code some place after the object has been created.

  2. Starten Sie das Debugging, und wenn die Ausführung am Haltepunkt angehalten wird, wählen Sie Debuggen > Fenster ** > lokal** oder alt+4 aus, um das Fenster lokal zu öffnen.Start debugging, and when execution pauses at the breakpoint, select Debug > Windows > Locals or Alt+4 to open the Locals window.

    Suchen Sie die jeweilige Objektinstanz im Lokal Fenster, klicken Sie mit der rechten Maustaste darauf, und wählen Sie Objekt-ID erstellenaus.Find the specific object instance in the Locals window, right-click it, and select Make Object ID.

    Sie sollten ein $ und eine Zahl im Lokalfenster einen Haltepunkt festlegen.You should see a $ plus a number in the Locals window. Dies ist die Objekt-ID.This is the object ID.

  3. Fügen Sie einen neuen Haltepunkt an dem Punkt hinzu, den Sie untersuchen möchten. beispielsweise, wenn das Objekt der Auflistung hinzugefügt werden soll.Add a new breakpoint at the point you want to investigate; for example, when the object is to be added to the collection. Klicken Sie mit der rechten Maustaste auf den Haltepunkt, und wählen Sie Bedingungen aus.Right-click the breakpoint and select Conditions.

  4. Verwenden Sie die Objekt-ID im Feld Bedingter Ausdruck.Use the Object ID in the Conditional Expression field. Wenn die Variable item z. b. das Objekt ist, das der Auflistung hinzugefügt werden soll, wählen Sie true aus, und geben Sie Item = = $<n > ein, wobei <n > die Objekt-ID-Nummer ist.For example, if the variable item is the object to be added to the collection, select Is true and type item == $<n>, where <n> is the object ID number.

    Die Ausführung wird an dem Punkt unterbrochen, an dem dieses Objekt der Auflistung hinzugefügt werden soll.Execution will break at the point when that object is to be added to the collection.

    Um die Objekt-ID zu löschen, klicken Sie im Lokal Fenster mit der rechten Maustaste auf die Variable und wählen Objekt- ID löschenaus.To delete the Object ID, right-click the variable in the Locals window and select Delete Object ID.

Note

Objekt-IDs erstellen Weak-Verweise und verhindern nicht, dass das Objekt in die Garbage Collection aufgenommen wird.Object IDs create weak references, and do not prevent the object from being garbage collected. Sie gelten nur für die aktuelle Debugsitzung.They are valid only for the current debugging session.

Festlegen der Bedingung für die Treffer AnzahlSet a hit count condition

Wenn Sie vermuten, dass eine Schleife im Code nach einer bestimmten Anzahl von Iterationen ein fehlerhaftes Verhalten aufweist, können Sie einen Haltepunkt festlegen, um die Ausführung nach dieser Anzahl von Treffern zu unterbrechen, anstatt wiederholt F5 drücken zu müssen, um diese Iteration zu erreichen.If you suspect that a loop in your code starts misbehaving after a certain number of iterations, you can set a breakpoint to stop execution after that number of hits, rather than having to repeatedly press F5 to reach that iteration.

Wählen Sie unter Bedingungen im Fenster halte Punkt Einstellungen die Option Treffer Anzahlaus, und geben Sie dann die Anzahl der Iterationen an.Under Conditions in the Breakpoint Settings window, select Hit Count, and then specify the number of iterations. Im folgenden Beispiel wird der Breakpoint so festgelegt, dass er für jede andere Iterationen auf Treffer trifft:In the following example, the breakpoint is set to hit on every other iteration:

Breakpoint-Treffer AnzahlBreakpoint hit count

Festlegen einer FilterbedingungSet a filter condition

Sie können einen Haltepunkt so einschränken, dass dieser nur auf bestimmten Geräten oder in angegebenen Prozesse und Threads aktiviert wird.You can restrict a breakpoint to fire only on specified devices, or in specified processes and threads.

Wählen Sie unter Bedingungen im Fenster halte Punkt Einstellungen die Option Filteraus, und geben Sie dann einen oder mehrere der folgenden Ausdrücke ein:Under Conditions in the Breakpoint Settings window, select Filter, and then enter one or more of the following expressions:

  • MachineName = "name"MachineName = "name"
  • ProcessId = valueProcessId = value
  • ProcessName = "name"ProcessName = "name"
  • ThreadId = valueThreadId = value
  • ThreadName = "name"ThreadName = "name"

Schließen Sie Zeichenfolgewerte in doppelte Anführungszeichen ein.Enclose string values in double quotes. Sie können Klauseln mit & (AND), || (OR), ! (NOT), und Klammern kombinieren.You can combine clauses using & (AND), || (OR), ! (NOT), and parentheses.

Funktions Breakpoints festlegenSet function breakpoints

Sie können die Ausführung unterbrechen, wenn eine Funktion aufgerufen wird.You can break execution when a function is called. Dies ist beispielsweise hilfreich, wenn Sie den Funktionsnamen, aber nicht seinen Speicherort kennen.This is useful, for example, when you know the function name but not its location. Dies ist auch nützlich, wenn Sie über Funktionen verfügen, die denselben Namen aufweisen, und Sie alle unterbrechen möchten (z. b. überladene Funktionen oder Funktionen in verschiedenen Projekten).It is also useful if you have functions with the same name and you want to break on them all (such as overloaded functions or functions in different projects).

So legen Sie einen Funktions Haltepunkt fest:To set a function breakpoint:

  1. Wählen Sie Debuggen > neuen Breakpoint > Funktions Breakpointsaus, oder drücken Sie alt+F9 > STRG+B.Select Debug > New Breakpoint > Function Breakpoint, or press Alt+F9 > Ctrl+B.

    Sie können auch im Fenster Breakpoints die Option New > Function Breakpoint auswählen.You can also select New > Function Breakpoint in the Breakpoints window.

  2. Geben Sie im Dialogfeld neuer Funktions Breakpunkt den Funktionsnamen in das Feld Funktionsname ein.In the New Function Breakpoint dialog, enter the function name in the Function Name box.

    So schränken Sie die Funktionsspezifikation ein:To narrow the function specification:

    • Verwenden Sie den voll qualifizierten Funktionsnamen.Use the fully qualified function name.

      Beispiel: Namespace1.ClassX.MethodA()Example: Namespace1.ClassX.MethodA()

    • Fügen Sie die Parametertypen einer überladenen Funktion hinzu.Add the parameter types of an overloaded function.

      Beispiel: MethodA(int, string)Example: MethodA(int, string)

    • Verwenden Sie das Symbol "!", um das Modul anzugeben.Use the '!' symbol to specify the module.

      Ein Beispiel: App1.dll!MethodAExample: App1.dll!MethodA

    • Verwenden Sie den Kontext Operator in C++nativem Format.Use the context operator in native C++.

      {function, , [module]} [+<line offset from start of method>]

      Ein Beispiel: {MethodA, , App1.dll}+2Example: {MethodA, , App1.dll}+2

  3. Wählen Sie in der Dropdown Liste Sprache die Sprache der Funktion aus.In the Language dropdown, choose the language of the function.

  4. Klicken Sie auf OK.Select OK.

Festlegen eines Funktions halte Punkts mit einer Speicheradresse ( C++ nur System eigen)Set a function breakpoint using a memory address (native C++ only)

Sie können die Adresse eines Objekts verwenden, um einen Funktions Haltepunkt für eine Methode festzulegen, die von einer bestimmten Instanz einer Klasse aufgerufen wird.You can use the address of an object to set a function breakpoint on a method called by a specific instance of a class. Wenn Sie z. b. ein adressierbares Objekt vom Typ my_classhaben, können Sie einen Funktions Haltepunkt für die my_method Methode festlegen, die von der-Instanz aufgerufen wird.For example, given an addressable object of type my_class, you can set a function breakpoint on the my_method method that instance calls.

  1. Legen Sie einen Haltepunkt fest, nachdem die Instanz der-Klasse instanziiert wurde.Set a breakpoint somewhere after the instance of the class is instantiated.

  2. Suchen Sie nach der Adresse der Instanz (z. b. 0xcccccccc).Find the address of the instance (for example, 0xcccccccc).

  3. Wählen Sie Debuggen > neuen Breakpoint > Funktions Breakpointsaus, oder drücken Sie alt+F9 > STRG+B.Select Debug > New Breakpoint > Function Breakpoint, or press Alt+F9 > Ctrl+B.

  4. Fügen Sie Folgendes in das Feld Funktions Name ein, und C++ wählen Sie Sprache aus.Add the following to the Function Name box, and select C++ language.

    ((my_class *) 0xcccccccc)->my_method
    

Festlegen von Daten Breakpoints (.net Core 3,0 oder höher)Set data breakpoints (.NET Core 3.0 or higher)

Daten Breakpoints unterbrechen die Ausführung, wenn sich die-Eigenschaft eines bestimmten Objekts ändert.Data breakpoints break execution when a specific object's property changes.

So legen Sie einen Daten Haltepunkt festTo set a data breakpoint

  1. Starten Sie in einem .net Core-Projekt das Debuggen, und warten Sie, bis ein Haltepunkt erreicht wird.In a .NET Core project, start debugging, and wait until a breakpoint is reached.

  2. Klicken Sie im Fenster Auto, Überwachungoder lokal mit der rechten Maustaste auf eine Eigenschaft, und wählen Sie im Kontext Menü die Optionunter brechen bei Wertänderungen aus.In the Autos, Watch, or Locals window, right-click a property and select Break when value changes in the context menu.

    Haltepunkt für verwaltete DatenManaged Data Breakpoint

Daten Breakpoints in .net Core funktionieren nicht für:Data breakpoints in .NET Core won't work for:

  • Eigenschaften, die in QuickInfo, lokal, Auto oder Überwachungsfenster nicht erweiterbar sindProperties that are not expandable in the tooltip, Locals, Autos, or Watch window
  • Statische VariablenStatic variables
  • Klassen mit dem Attribut "tbuggertypeproxy"Classes with the DebuggerTypeProxy Attribute
  • Felder innerhalb von StrukturenFields inside of structs

Daten Breakpoints festlegen (nur C++ nativ)Set data breakpoints (native C++ only)

Daten Breakpoints unterbrechen die Ausführung, wenn sich ein Wert ändert, der an einer bestimmten Speicheradresse gespeichert ist.Data breakpoints break execution when a value stored at a specified memory address changes. Wenn der Wert ausgelesen jedoch nicht geändert wird, wird die Ausführung nicht unterbrochen.If the value is read but not changed, execution doesn't break.

So legen Sie einen Daten Haltepunkt fest:To set a data breakpoint:

  1. Starten Sie C++ in einem Projekt das Debuggen, und warten Sie, bis ein Haltepunkt erreicht wird.In a C++ project, start debugging, and wait until a breakpoint is reached. Wählen Sie im Menü Debuggen die Option Neuer Haltepunkt > Daten Breakpoint aus.On the Debug menu, choose New Breakpoint > Data Breakpoint

    Sie können auch im Fenster Breakpoints den Eintrag New > Data Breakpoint auswählen oder mit der rechten Maustaste auf ein Element im Fenster Auto, Watchoder lokal klicken und unter brechen bei Wertänderungen im Kontextmenü auswählen.You can also select New > Data Breakpoint in the Breakpoints window or right-click an item in the Autos, Watch, or Locals window and select Break when value changes in the context menu.

  2. Geben Sie im Feld Adresse eine Speicheradresse oder einen Ausdruck ein, der als Speicheradresse ausgewertet wird.In the Address box, type a memory address, or an expression that evaluates to a memory address. Geben Sie beispielsweise &avar ein, um die Ausführung bei einer Änderung des Inhalts der Variable avar zu unterbrechen.For example, type &avar to break when the contents of the variable avar changes.

  3. Geben Sie im Feld Byteanzahl die Anzahl der Bytes an, die der Debugger überwachen soll.In the Byte Count dropdown, select the number of bytes you want the debugger to watch. Wenn Sie beispielsweise 4auswählen, überwacht der Debugger vier Bytes ab &avar und unterbricht, wenn eines dieser Bytes seinen Wert ändert.For example, if you select 4, the debugger will watch the four bytes starting at &avar and break if any of those bytes change value.

Daten Breakpoints funktionieren unter den folgenden Bedingungen nicht:Data breakpoints don't work under the following conditions:

  • Ein Prozess, der nicht gedebuggt wird, wird in einen Speicherbereich geschrieben.A process that is not being debugged writes to the memory location.
  • Der Speicherbereich wird von mindestens zwei Prozessen gemeinsam verwendet.The memory location is shared between two or more processes.
  • Der Speicherort wird innerhalb des Kernels aktualisiert.The memory location is updated within the kernel. Wenn z. b. der Arbeitsspeicher an die 32-Bit-Windows-ReadFile Funktion weitergegeben wird, wird der Arbeitsspeicher aus dem Kernel Modus aktualisiert, sodass der Debugger bei der Aktualisierung nicht unterbricht.For example, if memory is passed to the 32-bit Windows ReadFile function, the memory will be updated from kernel mode, so the debugger won't break on the update.
  • Dabei ist der Überwachungs Ausdruck auf 32-Bit-Hardware und 8 Bytes auf 64-Bit-Hardware größer als 4 Bytes.Where the watch expression is larger than 4 bytes on 32-bit hardware and 8 bytes on 64-bit hardware. Dies ist eine Einschränkung der x86-Architektur.This is a limitation of the x86 architecture.

Note

  • Daten Breakpoints sind von bestimmten Speicheradressen abhängig.Data breakpoints depend on specific memory addresses. Die Adresse einer Variablen ändert sich von einer Debugsitzung zur nächsten, sodass Daten Breakpoints am Ende jeder Debugsitzung automatisch deaktiviert werden.The address of a variable changes from one debugging session to the next, so data breakpoints are automatically disabled at the end of each debugging session.

  • Wenn Sie einen Datenhaltepunkt bei einer lokalen Variable festlegen, bleibt der Haltepunkt aktiviert, wenn die Funktion beendet wird, die Speicheradresse ist jedoch nicht mehr gültig, und das Verhalten des Haltepunkts ist unvorhersehbar.If you set a data breakpoint on a local variable, the breakpoint remains enabled when the function ends, but the memory address is no longer applicable, so the behavior of the breakpoint is unpredictable. Wenn Sie einen Daten Haltepunkt in einer lokalen Variable festlegen, sollten Sie den Breakpoint vor dem Beenden der Funktion löschen oder deaktivieren.If you set a data breakpoint on a local variable, you should delete or disable the breakpoint before the function ends.

Verwalten von Haltepunkten im HaltepunktefensterManage breakpoints in the Breakpoints window

Mit dem Fenster Breakpoints können Sie alle Breakpoints in der Projekt Mappe anzeigen und verwalten.You can use the Breakpoints window to see and manage all the breakpoints in your solution. Dieser zentralisierte Speicherort ist besonders bei einer großen Projekt Mappe oder bei komplexen Debugszenarien hilfreich, in denen Haltepunkte wichtig sind.This centralized location is especially helpful in a large solution, or for complex debugging scenarios where breakpoints are critical.

Im Fenster Breakpoints können Sie Breakpoints durchsuchen, sortieren, Filtern, aktivieren, deaktivieren oder löschen.In the Breakpoints window, you can search, sort, filter, enable/disable, or delete breakpoints. Sie können auch Bedingungen und Aktionen festlegen oder einen neuen Funktions-oder Daten Haltepunkt hinzufügen.You can also set conditions and actions, or add a new function or data breakpoint.

Um das Fenster Breakpoints zu öffnen, wählen Sie Debuggen > Fenster > Breakpointsaus, oder drücken Sie alt+F9 oder STRG+alt+B.To open the Breakpoints window, select Debug > Windows > Breakpoints, or press Alt+F9 or Ctrl+Alt+B.

![Fenster "Breakpoints"](../debugger/media/breakpointswindow.png ""Haltepunkte" (Fenster)")Breakpoints window

Um die Spalten auszuwählen, die im Fenster Breakpoints angezeigt werden sollen, wählen Sie Spalten anzeigenaus.To select the columns to display in the Breakpoints window, select Show Columns. Wählen Sie eine Spaltenüberschrift aus, um die Liste der Breakpoints nach dieser Spalte zu sortieren.Select a column header to sort the breakpoints list by that column.

HaltepunktbezeichnungenBreakpoint labels

Mit Bezeichnungen können Sie die Liste der Breakpoints im Fenster Breakpoints sortieren und filtern.You can use labels to sort and filter the list of breakpoints in the Breakpoints window.

  1. Wenn Sie einem Breakpoint eine Bezeichnung hinzufügen möchten, klicken Sie mit der rechten Maustaste auf den Breakpoint im Quellcode oder im Fenster Breakpoints , und wählen Sie dann Bezeichnungen bearbeitenaus.To add a label to a breakpoint, right-click the breakpoint in the source code or the Breakpoints window, and then select Edit labels. Fügen Sie eine neue Bezeichnung hinzu, oder wählen Sie eine vorhandene Bezeichnung aus, und klicken Sie dann auf OK.Add a new label or choose an existing one, and then select OK.
  2. Sortieren Sie die breakpointliste im Fenster Breakpoints , indem Sie die Bezeichnungen, Bedingungenoder andere Spaltenüberschriften auswählen.Sort the breakpoint list in the Breakpoints window by selecting the Labels, Conditions, or other column headers. Sie können die anzuzeigenden Spalten auswählen, indem Sie in der Symbolleiste die Option Spalten anzeigen auswählen.You can select the columns to display by selecting Show Columns in the toolbar.

Exportieren und Importieren von HaltepunktenExport and import breakpoints

Wenn Sie den Zustand und den Speicherort der Breakpoints speichern oder freigeben möchten, können Sie Sie exportieren oder importieren.To save or share the state and location of your breakpoints, you can export or import them.

  • Um einen einzelnen Haltepunkt in eine XML-Datei zu exportieren, klicken Sie mit der rechten Maustaste auf den Breakpoint im Fenster Quellcode oder Breakpoints , und wählen Sie exportieren oder Exportieren ausgewähltaus.To export a single breakpoint to an XML file, right-click the breakpoint in the source code or Breakpoints window, and select Export or Export selected. Wählen Sie einen Export Speicherort aus, und klicken Sie dann auf Speichern.Select an export location, and then select Save. Der Standard Speicherort ist der Projektmappenordner.The default location is the solution folder.
  • Wenn Sie mehrere Haltepunkte exportieren möchten, wählen Sie im Fenster Breakpoints die Kontrollkästchen neben den Breakpoints aus, oder geben Sie Suchkriterien in das Suchfeld ein.To export several breakpoints, in the Breakpoints window, select the boxes next to the breakpoints, or enter search criteria in the Search field. Wählen Sie das Symbol alle Haltepunkte exportieren, die dem aktuellen Suchkriterium entsprechen aus, und speichern Sie die Datei.Select the Export all breakpoints matching the current search criteria icon, and save the file.
  • Wenn Sie alle Haltepunkte exportieren möchten, deaktivieren Sie alle Kontrollkästchen, und lassen Sie das Suchfeld leer.To export all breakpoints, deselect all boxes and leave the Search field blank. Wählen Sie das Symbol alle Haltepunkte exportieren, die dem aktuellen Suchkriterium entsprechen aus, und speichern Sie die Datei.Select the Export all breakpoints matching the current search criteria icon, and save the file.
  • Wenn Sie Haltepunkte importieren möchten, wählen Sie im Fenster Breakpoints das Symbol halte Punkte aus einer Datei importieren aus , navigieren Sie zum Speicherort der XML-Datei, und wählen Sie Öffnenaus.To import breakpoints, in the Breakpoints window, select the Import breakpoints from a file icon, navigate to the XML file location, and select Open.

Haltepunkte in Debuggerfenstern festlegenSet breakpoints from debugger windows

Sie können auch Haltepunkte in den Fenstern " aufrufsstapel " und " Disassembly -Debugger" festlegen.You can also set breakpoints from the Call Stack and Disassembly debugger windows.

Festlegen eines halte Punkts im Fenster "aufrufsstapel"Set a breakpoint in the Call Stack window

Um bei der Anweisung oder Zeile zu unterbrechen, zu der eine aufrufende Funktion zurückkehrt, können Sie im Fenster Aufruf Stapel einen Haltepunkt festlegen.To break at the instruction or line that a calling function returns to, you can set a breakpoint in the Call Stack window.

So legen Sie einen Haltepunkt im Fenster "aufrufsstapel" fest:To set a breakpoint in the Call Stack window:

  1. Um das Fenster "Fenster" aufzurufen , müssen Sie während des Debuggens angehalten werden.To open the Call Stack window, you must be paused during debugging. Wählen Sie Debuggen > Windows > - aufrufsstapel, oder drücken Sie STRG+alt+C.Select Debug > Windows > Call Stack, or press Ctrl+Alt+C.

  2. Klicken Sie im Fenster Aufruf Stapel mit der rechten Maustaste auf die aufrufende Funktion, und wählen Sie halte Punkt > halte Punkt einfügenaus, oder drücken Sie F9.In the Call Stack window, right-click the calling function and select Breakpoint > Insert Breakpoint, or press F9.

    Ein breakpointsymbol wird neben dem Namen des Funktions Aufrufes am linken Rand der aufrufsstapel angezeigt.A breakpoint symbol appears next to the function call name in the left margin of the call stack.

Der Haltepunkt für die Haltepunkt-Haltepunkt wird im Fenster Breakpoints als Adresse mit einem Speicherbereich angezeigt, der der nächsten ausführbaren Anweisung in der Funktion entspricht.The call stack breakpoint appears in the Breakpoints window as an address, with a memory location that corresponds to the next executable instruction in the function.

Der Debugger unterbricht bei der Anweisung.The debugger breaks at the instruction.

Weitere Informationen zur Aufrufliste finden Sie unter How to: Use the Call Stack Window (Vorgehensweise: Verwenden des Fensters „Aufrufliste“).For more information about the call stack, see How to: Use the Call Stack window.

Informationen zur visuellen Ablauf Verfolgung von Breakpoints während der Codeausführung finden Sie unter map-Methoden in der-aufrufsstapel während desTo visually trace breakpoints during code execution, see Map methods on the call stack while debugging.

Festlegen eines halte Punkts im DisassemblyfensterSet a breakpoint in the Disassembly window

  1. Um das Disassemblyfenster zu öffnen, müssen Sie während des Debuggens angehalten werden.To open the Disassembly window, you must be paused during debugging. Wählen Sie Debuggen > Windows > Disassemblyaus, oder drücken Sie alt+8.Select Debug > Windows > Disassembly, or press Alt+8.

  2. Klicken Sie im Fenster Disassembly auf den linken Rand der Anweisung, bei der Sie unterbrechen möchten.In the Disassembly window, click in the left margin of the instruction you want to break at. Sie können es auch auswählen und F9drücken, oder mit der rechten Maustaste klicken und halte Punkt > halte Punkt einfügenauswählen.You can also select it and press F9, or right-click and select Breakpoint > Insert Breakpoint.

Siehe auchSee also