Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe von Ablaufverfolgungspunkten können Sie Informationen unter konfigurierbaren Bedingungen im Ausgabefenster protokollieren, ohne den Code zu ändern oder zu beenden. Dieses Feature wird sowohl für verwaltete Sprachen (C#, Visual Basic, F#) als auch für nativen Code sowie für Sprachen wie JavaScript und Python unterstützt.
Hinweis
Informationen zum programmgesteuerten Protokollieren von Informationen zum Ausgabefenster mithilfe von .NET-APIs finden Sie unter Senden von Nachrichten an das Ausgabefenster.
Nehmen wir uns ein Beispiel an
Das folgende Beispielprogramm ist eine einfache for Schleife mit einer Zählervariable, die bei jeder Ausführung der Schleife um eine weitere Iteration erhöht wird.
using System.Diagnostics;
namespace Tracepoints
{
public class Program
{
public static void Main(string[] args)
{
int counter = 0;
for (int i=0; i<=10; i++)
{
counter +=1;
}
}
}
}
Festlegen von Ablaufverfolgungspunkten im Quellcode
Sie können Ablaufverfolgungspunkte festlegen, indem Sie im Fenster "Haltepunkteinstellungen" eine Ausgabezeichenfolge unter dem Kontrollkästchen "Aktion" angeben.
Um einen Ablaufverfolgungspunkt zu initialisieren, klicken Sie zuerst links neben der Zeilennummer auf den Bundsteg, an dem Sie den Ablaufverfolgungspunkt festlegen möchten.
Zeigen Sie mit der Maus auf den roten Kreis, und klicken Sie auf das Zahnradsymbol, um das Fenster " Haltepunkteinstellungen " zu öffnen.
Aktivieren Sie das Kontrollkästchen "Aktion ".
Beachten Sie, dass sich der rote Kreis in eine Raute ändert, die angibt, dass Sie von einem Haltepunkt zu Ablaufverfolgungspunkt gewechselt haben.
Geben Sie die Nachricht ein, die Sie im Textfeld " Ausgabefenster anzeigen " anmelden möchten (ausführliche Informationen finden Sie in den nachfolgenden Abschnitten in diesem Artikel).
Ihr Ablaufverfolgungspunkt ist jetzt festgelegt. Wenn Sie nur einige Informationen im Ausgabefenster protokollieren möchten, klicken Sie auf die Schaltfläche "Schließen".
Wenn Sie Bedingungen hinzufügen möchten, die bestimmen, ob Ihre Nachricht angezeigt wird, aktivieren Sie das Kontrollkästchen "Bedingungen ".
Sie haben drei Optionen für Bedingungen: Bedingter Ausdruck, Filter und Trefferanzahl.
Menü "Aktionen"
Mit diesem Menü können Sie eine Nachricht im Ausgabefenster protokollieren. Geben Sie die Zeichenfolgen ein, die Sie in das Meldungsfeld ausgeben möchten (keine Anführungszeichen erforderlich). Wenn Sie Variablenwerte anzeigen möchten, stellen Sie sicher, dass Sie sie in geschweifte Klammern einschließen.
Wenn Sie beispielsweise den Wert der counter Variablen in der Ausgabekonsole anzeigen möchten, geben {counter} Sie das Meldungstextfeld ein.
Wenn Sie auf "Schließen" klicken und dann das Programm (F5) debuggen, wird die folgende Ausgabe im Ausgabefenster angezeigt.
Sie können auch spezielle Schlüsselwörter verwenden, um spezifischere Informationen anzuzeigen. Geben Sie das Schlüsselwort genau wie unten dargestellt ein (verwenden Sie vor jedem Schlüsselwort ein "$" und alle Großbuchstaben für das Schlüsselwort selbst).
| Keyword | Was angezeigt wird |
|---|---|
$ADDRESS |
Aktuelle Anweisung |
$CALLER |
Aufrufen des Funktionsnamens |
$CALLSTACK |
Aufrufliste |
$FUNCTION |
Aktueller Funktionsname |
$PID |
Prozess-ID |
$PNAME |
Prozessname |
$TID |
Thread-ID |
$TNAME |
Threadname |
$TICK |
Teilstrichanzahl (aus Windows GetTickCount) |
Menü "Bedingungen"
Bedingungen ermöglichen es Ihnen, Ihre Ausgabemeldungen zu filtern, sodass sie nur unter bestimmten Szenarien angezeigt werden. Es stehen ihnen drei Hauptbedingungen zur Verfügung.
Bedingter Ausdruck
Bei einem bedingten Ausdruck wird eine Ausgabemeldung nur angezeigt, wenn bestimmte Bedingungen erfüllt sind.
Bei bedingten Ausdrücken können Sie entweder den Ablaufverfolgungspunkt so festlegen, dass eine Nachricht ausgegeben wird, wenn eine bestimmte Bedingung wahr ist oder wenn sie geändert wurde. Wenn Sie beispielsweise nur den Wert des Zählers während gerader Iterationen der for Schleife anzeigen möchten, können Sie die Option "Ist wahr " auswählen und dann in das Meldungstextfeld eingeben i%2 == 0 .
Wenn Sie den Wert des Zählers drucken möchten, wenn sich die Iteration der for Schleife ändert, wählen Sie die Option "Wenn geändert " aus, und geben Sie das Meldungstextfeld ein i .
Das Verhalten der Option "Wenn geändert" unterscheidet sich für unterschiedliche Programmiersprachen.
- Bei systemeigenem Code betrachtet der Debugger nicht die erste Auswertung der Bedingung als Änderung, sodass der Ablaufverfolgungspunkt bei der ersten Auswertung nicht erreicht wird.
- Für verwalteten Code trifft der Debugger den Ablaufverfolgungspunkt für die erste Auswertung, nachdem " Geändert " ausgewählt wurde.
Sie können die Bedingung auch festlegen, wenn der Ablaufverfolgungspunkt aktiviert werden kann, indem Sie einen Haltepunkt in einen bestimmten Abschnitt des Codes einfügen und das Kontrollkästchen aktivieren, wenn der folgende Haltepunkt erreicht wird: Option im Menü " Haltepunkteinstellungen" . Sie können einen beliebigen Haltepunkt aus der Auswahlliste auswählen.
Einen umfassenderen Einblick in gültige Ausdrücke, die Sie beim Festlegen von Bedingungen verwenden können, finden Sie unter Ausdrücke im Debugger.
KI-Unterstützung erhalten
Wenn Sie Copilot haben, können Sie KI-Unterstützung erhalten, während Sie einen Ablaufverfolgungspunkt erstellen. Copilot bietet Ihnen Vorschläge für bedingte Haltepunkte und Ablaufverfolgungspunkte , die für Ihren Code spezifisch sind.
Weitere Informationen finden Sie unter "Debuggen mit Copilot".
Trefferanzahl
Mit einer Trefferzählungsbedingung können Sie die Ausgabe erst nach der Codezeile senden, in der der Ablaufverfolgungspunkt festgelegt wurde, eine bestimmte Anzahl von Malen ausgeführt hat.
Für die Trefferanzahl können Sie eine Nachricht ausgeben, wenn die Codezeile, in der der Ablaufverfolgungspunkt festgelegt ist, eine bestimmte Anzahl von Malen ausgeführt wurde. Basierend auf der Anforderung kann es gleich sein oder ein Vielfaches von oder größer oder gleich dem angegebenen Trefferanzahlwert ist. Wählen Sie die Option aus, die Ihren Anforderungen am besten entspricht, und geben Sie einen ganzzahligen Wert in das Feld ein (z. B. 5), der diese Iteration von Interesse darstellt.
Sie können den Haltepunkt auch auf dem ersten Treffer entfernen, indem Sie das Kontrollkästchen "Haltepunkt entfernen" aktivieren, sobald er erreicht wurde.
Filter
Geben Sie für eine Filterbedingung an, für welche Geräte, Prozesse oder Threads die Ausgabe angezeigt wird.
Liste der Filterausdrücke:
-
MachineName= "name" -
ProcessId= Wert -
ProcessName= "name" -
ThreadId= Wert -
ThreadName= "name"
Schließen Sie Zeichenfolgen (z. B. Namen) in doppelte Anführungszeichen ein. Werte können ohne Anführungszeichen eingegeben werden. Sie können Klauseln mithilfe von & (), (AND), ||OR (!NOT) und Klammern kombinieren.
Überlegungen
Während Ablaufverfolgungspunkte dazu gedacht sind, das Debuggen übersichtlicher und reibungsloser zu gestalten. Es gibt einige Überlegungen, die Sie bei der Verwendung beachten sollten.
Manchmal kann sich der Wert ändern, wenn Sie eine Eigenschaft oder ein Attribut eines Objekts überprüfen. Wenn sich der Wert während der Überprüfung ändert, handelt es sich nicht um einen Fehler, der durch das Tracepoint-Feature selbst verursacht wird. Durch die Verwendung von Ablaufverfolgungspunkten zum Überprüfen von Objekten werden diese versehentlichen Änderungen jedoch nicht vermieden.
Die Art und Weise, wie Ausdrücke im Meldungsfeld "Aktion " ausgewertet werden, unterscheidet sich möglicherweise von der Sprache, die Sie derzeit für die Entwicklung verwenden. Wenn Sie z. B. eine Zeichenfolge ausgeben möchten, müssen Sie eine Nachricht nicht in Anführungszeichen umschließen, auch wenn Sie dies normalerweise verwenden Debug.WriteLine() oder console.log()verwenden würden. Außerdem kann die geschweifte Klammernsyntax ({ }) zum Ausgeben von Ausdrücken auch von der Konvention für die Ausgabe von Werten in Ihrer Entwicklungssprache abweichen. (Der Inhalt der geschweiften Klammern ({ }) sollte jedoch weiterhin mithilfe der Syntax Der Entwicklungssprache geschrieben werden.
Wenn Sie versuchen, eine Liveanwendung zu debuggen und nach einem ähnlichen Feature zu suchen, schauen Sie sich unser Protokollpunktfeature im Momentaufnahmedebugger an. Der Momentaufnahmedebugger ist ein Tool, mit dem Probleme in Produktionsanwendungen untersucht werden. Logpoints ermöglichen es Ihnen auch, Nachrichten an das Ausgabefenster zu senden, ohne Quellcode ändern zu müssen und sich nicht auf Ihre ausgeführte Anwendung auswirken. Weitere Informationen finden Sie unter Debuggen einer Live-Azure-Anwendung.