Einführung in das Zeitreise-Debugging für Visual Studio Enterprise 2019

Die TTD-Vorschau (Time Travel Debugging) in Visual Studio Enterprise 2019 bietet die Möglichkeit, eine Webanwendung aufzuzeichnen, die auf einer Azure Virtual Machine (VM) ausgeführt wird, und anschließend den Ausführungspfad genau zu rekonstruieren und wiederzugeben. TTD lässt sich in unser Snapshot Debugger- Angebot integrieren und ermöglicht es Ihnen, jede Codezeile beliebig oft zurückzuspulen und wiederzugeben, um Probleme zu isolieren und zu identifizieren, die möglicherweise nur in Produktionsumgebungen auftreten.



Dieser Artikel im Blog

Die effektivste Art des Debuggens tritt häufig in der sogenannten „inneren Schleife“ auf. Während Sie den Code lokal überprüfen und debuggen, bevor Sie zur Versionskontrolle übergehen. Die Probleme, auf die wir während der Entwicklung der inneren Schleife stoßen, sind normalerweise leichter zu verstehen und zu diagnostizieren, da sie zugänglich und wiederholbar sind.


Wir freuen uns, heute die Veröffentlichung des Time Travel Debugging (TTD) in Visual Studio Enterprise bekannt zu geben. Mit TTD erhalten Sie die Möglichkeit, in der Produktion ausgeführten Code aufzuzeichnen und den Ausführungspfad in Visual Studio wiederzugeben. Mit TTD können Sie sich auch zeitlich vorwärts und rückwärts bewegen, als würden Sie lokal ein Debugging der „inneren Schleife“ durchführen. Sie erhalten auch Zugriff auf wichtige Debugging-Funktionen wie Einheimische und den Aufrufstapel.


Mit den heutigen Debuggern können Sie normalerweise an einem bestimmten Haltepunkt anhalten, indem Sie den gesamten Prozess anhalten und dann nur vorwärts gehen. Selbst mit einem fortschrittlicheren Debugging-Tool wie IntelliTrace zeichnen Sie Ereignisse und Daten zu bestimmten Zeitpunkten auf. TTD hat einen erheblichen Vorteil gegenüber Snapshots, Protokollierungs- oder Crash-Dump-Dateien, da diesen Methoden im Allgemeinen die genauen Details des Ausführungspfads fehlen, der zum endgültigen Fehler oder Fehler geführt hat.


Was ist das Time Travel Debugging?

Time Travel Debugging (TTD) ist eine Reverse-Debugging-Lösung, mit der Sie die Ausführung von Code in einer App oder einem Prozess aufzeichnen und vorwärts und rückwärts wiedergeben können. TTD verbessert das Debuggen, da Sie in der Zeit zurückgehen können, um die Bedingungen, die zu einem bestimmten Fehler führen, besser zu verstehen. Darüber hinaus können Sie es mehrmals abspielen, um zu verstehen, wie das Problem am besten behoben werden kann. Die TTD-Technologie wurde kürzlich in einer Vorschauversion von WinDbg für native Codeszenarien eingeführt .


Wir haben den Snapshot-Debugger um TTD erweitert, damit Sie Ihre Anwendungen während der Ausführung aufzeichnen können. Diese Aufnahme kann dann in Visual Studio 2019 Enterprise wiedergegeben werden, wo Sie jede Codezeile so oft zurückspulen und wiedergeben können, wie Sie möchten. TTD-Datensätze auf dem Thread, die den Snappoint-Bedingungen entsprechen und im Allgemeinen bis zum Ende der Methode ausgeführt werden. Wenn nach dem Snappoint, aber vor dem Ende der Methode ein "Warten" erfolgt, beenden wir die Aufzeichnung dort, wo das Warten auftritt. Diese Funktion wird in der Vorschau für die Veröffentlichung von Visual Studio 2019 mit einer Go-Live-Lizenz angezeigt. Wir planen, in zukünftigen Updates weitere TTD-Szenarien hinzuzufügen.


Erste Schritte mit TTD

Die Zeitreise-Debugging-Vorschau kann in der neuesten Version von Visual Studio Enterprise 2019 für Azure Virtual Machines unter Windows unter ASP.NET (4.8+) aktiviert werden .


Führen Sie nach der Installation der neuesten Version von Visual Studio Enterprise die folgenden Schritte aus:


1. Öffnen Sie das Projekt, für das Sie Time Travel Debug durchführen möchten. Stellen Sie sicher, dass Sie über dieselbe Version des Quellcodes verfügen, die auf Ihrer Azure Virtual Machine veröffentlicht wurde.


2. Wählen Sie Debug> Snapshot-Debugger anhängen und wählen Sie die Azure Virtual Machine aus, auf der Ihr Projekt zusammen mit einem Azure-Speicherkonto bereitgestellt wird. Sie müssen die Snapshot Debugger-Site-Erweiterung installieren, wenn Sie zum ersten Mal versuchen, eine Verbindung herzustellen.


3. Wählen Sie die Option Zeitreise-Debugging und klicken Sie dann auf Anhängen . Sobald sich Visual Studio im Snapshot-Debugger-Modus befindet, kann es mit TTD aufnehmen.



4. Erstellen Sie einen Snappoint und konfigurieren Sie ihn so, dass das Debuggen von Zeitreisen aktiviert wird. Klicken Sie auf Start \ Update Collection .



5. Sobald Ihr Snapshot erfasst wurde, klicken Sie auf Snapshot anzeigen und Sie können die Befehlsleiste verwenden, um innerhalb der aufgezeichneten Methode vorwärts und rückwärts zu gehen.



Einschränkungen der TTD-Vorschau

In der ersten Vorschau von TTD werden AMD64-Webanwendungen unterstützt, die auf einer Azure Virtual Machine (VM) ausgeführt werden. Wir gehen davon aus, dass die Aufzeichnung Ihren laufenden Prozess erheblich aufwendig macht und ihn basierend auf der Prozessgröße und der Anzahl der aktiven Threads verlangsamt. Wir erwarten auch eine Verschlechterung der Debugging-Erfahrungen in einigen der folgenden Szenarien: -


  • Während einer GC-Verdichtungsphase.
  • Durchlaufen einer optimierten Methode, z. B. wenn Sie eine Methode betreten, die keinen Snappoint enthält.
  • Wenn Ihre Anwendung App-Domänen intern lädt oder entlädt.
  • Die Aufzeichnung erfolgt nur für den Thread, der durch den Snappoint ausgelöst wurde. Code, der sich anschließend auf alternative Threads auswirkt, wird ebenfalls beeinträchtigt.

Bitte beachten Sie: Wir werden auch die asynchronen Kausalitätsketten nicht aufzeichnen.


Während der Vorschau-Tests haben wir festgestellt, dass die TTD-Dateigrößen zwischen mehreren hundert Megabyte und mehreren Gigabyte liegen, je nachdem, wie lange Ihre Sitzung dauert und wie lange die Web-App ausgeführt wird. Von TTD erstellte Dateien werden jedoch bereinigt, sobald die Snapshot-Debugger-Sitzung endet und ein App-Pool-Recycling eingeleitet wird. Für unsere Vorschau-Version empfehlen wir außerdem die Verwendung einer VM mit mindestens 8 GB RAM.


Probieren Sie TTD jetzt aus!

Wir sind unglaublich gespannt, wie diese Vorschaufunktion dazu beitragen kann, Ihre Debugging-Erfahrungen in Azure zu verbessern. Dies ist jedoch nur der Anfang. Unser Team entwickelt und baut weiterhin zusätzliche TTD-Funktionen, die wir in den kommenden Visual Studio-Versionen hinzufügen möchten.


Wir zählen auf Ihr Feedback über unsere Entwickler-Community und den Feedback-Hub. Sie können uns dabei helfen, Prioritäten für Verbesserungen zu setzen, da wir alle von Ihnen bereitgestellten Antworten wirklich schätzen.


Avatar
Mark Downie

Programmmanager, Visual Studio-Produktionsdiagnose

Source: https://habr.com/ru/post/de448778/


All Articles