Zeitreise-Debugging in Visual Studio Enterprise 2019

Mit der Vorschauversion von Time Travel Debugging (TTD) in Visual Studio Enterprise 2019 können Sie die Ausführung einer Webanwendung aufzeichnen, die auf einer virtuellen Azure-Maschine ausgeführt wird, und den Algorithmus anschließend genau wiederherstellen und reproduzieren. TTD ist in unser Snapshot Debugger- Angebot integriert und ermöglicht es Ihnen, jede Codezeile beliebig oft zurückzuspulen und abzuspielen, um Probleme zu identifizieren und vorherzusagen, die nur in Kampfumgebungen auftreten können.


Das Bild stammt von der Spieleseite Quantum Break (18+) im Microsoft Store. Übrigens gibt es einen Rabatt von 75% (10 $). Wenn jemand die Gelegenheit wollte, aber nicht finden konnte, empfehlen wir sie.



Die effizienteste Art des Debuggens findet häufig in der sogenannten „inneren Schleife“ statt. Wenn Sie Code lokal anzeigen und debuggen, bevor Sie mit der Versionskontrolle fortfahren. Die Probleme, mit denen wir während der Entwicklung des internen Zyklus konfrontiert sind, sind normalerweise leichter zu verstehen und zu diagnostizieren, da sie zugänglich und wiederholbar sind.

Bild

Heute freuen wir uns, die Veröffentlichung von Time Travel Debugging (TTD) in Visual Studio Enterprise bekannt zu geben. Mit TTD bieten wir Ihnen die Möglichkeit, Code zu schreiben, der in einer Produktionsumgebung ausgeführt wird, und den Ausführungspfad in Visual Studio zu reproduzieren. Mit TTD können Sie sich auch zeitlich hin und her bewegen, als würden Sie das lokale Debuggen der „inneren Schleife“ durchführen. Sie erhalten auch Zugriff auf wichtige Debugging-Funktionen wie Lokale und den Aufrufstapel.

Moderne Debugger ermöglichen es Ihnen normalerweise, an einem bestimmten Punkt (Haltepunkt) anzuhalten, den gesamten Prozess zu unterbrechen und erst dann vorwärts zu gehen. Selbst mit fortschrittlicheren Debugging-Tools wie IntelliTrace zeichnen Sie Ereignisse und Daten zu diskreten Zeitpunkten auf. TTD hat einen erheblichen Vorteil gegenüber Snapshots, Protokollierungs- oder Crash-Dump-Dateien, da diese Methoden normalerweise keine genauen Informationen über den Ausführungspfad enthalten, der zum endgültigen Fehler oder Fehler geführt hat.

Was ist Zeitreise-Debugging?


Time Travel Debugging (TTD) ist eine Reverse-Debugging-Lösung, mit der Sie die Ausführung von Code in einer Anwendung oder einem Prozess aufzeichnen und vor und zurück abspielen 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 spielen, um herauszufinden, wie Sie das Problem am besten beheben können. Die TTD-Technologie wurde kürzlich in der Vorschau-Version von WinDbg für Skripte mit nativem Code eingeführt .

Wir haben den Snapshot Debugger mit TTD erweitert, damit Sie Anwendungen während der Ausführung aufzeichnen können. Dieser Datensatz kann dann in Visual Studio Enterprise 2019 wiedergegeben werden, wo Sie jede Codezeile beliebig oft zurückspulen und abspielen können. TTD schreibt in einen Thread, der die Snappoint-Bedingungen erfüllt und normalerweise bis zum Ende der Methode ausgeführt wird. Wenn jedoch vor dem Ende der Methode nach dem Snappoint "Warten" angezeigt wird, wird die Aufzeichnung gestoppt. Diese Funktion wird in der Vorschau für die Veröffentlichung von Visual Studio 2019 mit einer gültigen Lizenz angezeigt. Wir planen, in zukünftigen Updates weitere TTD-Skripte hinzuzufügen.

Erste Schritte mit TTD


Vorschau Das Zeitreise-Debugging kann in der neuesten Version von Visual Studio Enterprise 2019 für virtuelle Azure-Maschinen unter Windows mit 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 Time Travel Debug erforderlich ist. Stellen Sie sicher, dass Sie über dieselbe Version des Quellcodes verfügen, der auf der virtuellen Azure-Maschine veröffentlicht ist.

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

3. Wählen Sie die Option Time Travel Debugging und klicken Sie auf die Schaltfläche Anhängen . Sobald Visual Studio in den Snapshot-Debugger-Modus wechselt, kann es mit TTD aufnehmen.

Bild

4. Erstellen Sie einen Snappoint und konfigurieren Sie ihn so, dass das Time Travel Debugging aktiviert ist. Klicken Sie auf Start \ Update Collection .

Bild

5. Nachdem Ihr Snapshot kompiliert wurde, klicken Sie auf Snapshot anzeigen. Mit der Befehlsleiste können Sie innerhalb der aufgezeichneten Methode hin und her gehen.

Bild

Einschränkungen der TTD-Vorschau
In der ersten Vorschauphase von TTD werden AMD64-Webanwendungen unterstützt, die auf einer virtuellen Azure-Maschine ausgeführt werden. Wir erwarten, dass der Eintrag Ihrem laufenden Prozess einen erheblichen Overhead hinzufügt und ihn abhängig von der Größe des Prozesses und der Anzahl der aktiven Threads verlangsamt. Wir erwarten auch eine Verschlechterung des Debuggens in einigen der folgenden Szenarien:

  • Während der Verdichtungsphase des GC.
  • Durchlaufen einer optimierten Methode, wenn Sie beispielsweise eine Methode eingeben, die keinen Snappoint enthält.
  • Wenn Ihre Anwendung Anwendungsdomänen intern herunterlädt oder entlädt.
  • Die Aufzeichnung erfolgt nur in dem Stream, der von snappoint aufgerufen wurde. Code, der sich anschließend auf alternative Threads auswirkt, wird ebenfalls beeinträchtigt.

Bitte beachten Sie: Wir zeichnen auch keine asynchronen Ursache-Wirkungs-Beziehungen auf.

Bei vorläufigen Tests haben wir festgestellt, dass die TTD-Dateigröße je nach Sitzungsdauer und Dauer der Webanwendung zwischen einigen hundert Megabyte und mehreren Gigabyte liegt. Die von TTD erstellten Dateien werden jedoch bereinigt, nachdem die Snapshot-Debugger-Sitzung abgeschlossen und der Anwendungspool neu gestartet wurde. Für unsere Vorabversion empfehlen wir außerdem die Verwendung einer virtuellen Maschine mit mindestens 8 GB RAM.

Probieren Sie TTD jetzt aus!


Wir sind unglaublich gespannt, wie Sie mit dieser Vorschaufunktion das Debuggen in Azure verbessern können. Dies ist jedoch nur der Anfang. Unser Team entwickelt und erstellt weitere TTD-Funktionen, die wir in den kommenden Versionen von Visual Studio hinzufügen möchten.

Wir freuen uns auf Ihr Feedback!

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


All Articles