Debuggen von benutzerdefiniertem C#-Code für fehlerhafte U-SQL-Aufträge

Wichtig

Azure Data Lake Analytics am 29. Februar 2024 eingestellt. In dieser Ankündigung erhalten Sie weitere Informationen.

Für Datenanalysen kann Ihr organization Azure Synapse Analytics oder Microsoft Fabric verwenden.

Für U-SQL wird ein Erweiterbarkeitsmodell mit C# bereitgestellt. In U-SQL-Skripts ist es einfach, C#-Funktionen aufzurufen und Analysefunktionen auszuführen, die von einer SQL-ähnlichen deklarativen Sprache nicht unterstützt werden. Weitere Informationen zur U-SQL-Erweiterbarkeit finden Sie im U-SQL-Programmierbarkeitshandbuch.

In der Praxis kann jeder Code debuggen, aber es ist schwierig, einen verteilten Auftrag mit benutzerdefiniertem Code in der Cloud mit eingeschränkten Protokolldateien zu debuggen. Azure Data Lake Tools für Visual Studio enthalten ein Feature zum Debuggen von Vertexfehlern, mit dem das Debuggen von Fehlern in Ihrem benutzerdefinierten Code vereinfacht wird. Wenn für den U-SQL-Auftrag ein Fehler auftritt, behält der Dienst den Fehlerstatus bei, und das Tool unterstützt Sie beim Herunterladen der Cloudfehlerumgebung auf den lokalen Computer für das Debuggen. Der lokale Download umfasst die gesamte Cloudumgebung, einschließlich Eingabedaten und Benutzercode.

Das folgende Video zeigt die Verwendung des Features „Debuggen von Vertexfehlern“ in Azure Data Lake Tools für Visual Studio.

Wichtig

Für Visual Studio müssen zur Nutzung dieses Features die beiden folgenden Updates installiert sein: Microsoft Visual C++ 2015 Redistributable Update 3 und die universelle Windows 10-C-Runtime.

Herunterladen eines fehlerhaften Vertex auf den lokalen Computer

Wenn Sie in Azure Data Lake Tools für Visual Studio einen fehlerhaften Auftrag öffnen, wird eine gelbe Warnleiste mit ausführlichen Fehlermeldungen auf der Fehlerregisterkarte angezeigt.

  1. Wählen Sie Herunterladen aus, um alle erforderlichen Ressourcen und Eingabestreams herunterzuladen. Wenn der Download nicht abgeschlossen ist, wählen Sie Wiederholen aus.

  2. Wählen Sie Nach Abschluss des Downloads öffnen aus, um eine lokale Debugumgebung zu generieren. Eine neue Debugprojektmappe wird geöffnet, und wenn Sie die vorhandene Projektmappe in Visual Studio geöffnet haben, achten Sie bitte darauf, sie vor dem Debuggen zu speichern und zu schließen.

Screenshot eines Data Lake Analytics Auftrags in USQL mit hervorgehobener Schaltfläche

Konfigurieren der Debugumgebung

Hinweis

Vergewissern Sie sich vor dem Debuggen, dass im Fenster mit den Ausnahmeeinstellungen(STRG+ALT+E) die Option Common Language Runtime-Ausnahmen aktiviert ist.

Screenshot des benutzerdefinierten C#-Quellcodes mit den Ausnahmeneinstellungen mit festgelegten Common Language Runtime-Ausnahmen.

In der neu gestarteten Visual Studio-instance finden Sie möglicherweise den benutzerdefinierten C#-Quellcode oder nicht:

  1. Ich kann meinen Quellcode in der Lösung finden

  2. Ich kann meinen Quellcode in der Lösung nicht finden.

Quellcode ist in Debugprojektmappe enthalten

Es gibt zwei Fälle, in denen der C#-Quellcode erfasst wird:

  1. Der Benutzercode wird in einer CodeBehind-Datei (in einem U-SQL-Projekt normalerweise Script.usql.cs) definiert.

  2. Der Benutzercode wird in einem C#-Klassenbibliotheksprojekt für die U-SQL-Anwendung definiert und als Assembly mit Debuginformationen registriert.

Wenn der Quellcode in die Lösung importiert wird, können Sie die Visual Studio-Debugtools (Überwachung, Variablen usw.) nutzen, um die Problembehandlung durchzuführen:

  1. Drücken Sie die Taste F5 , um mit dem Debuggen zu beginnen. Der Code wird ausgeführt, bis er durch eine Ausnahme beendet wird.

  2. Öffnen Sie die Quellcodedatei, und legen Sie Breakpoints fest. Drücken Sie anschließend F5, um den Code schrittweise zu debuggen.

    Screenshot: benutzerdefinierter Code mit einem Haltepunktsatz, der eine Ausnahme in der hervorgehobenen Zeile zeigt.

Quellcode ist nicht in der Debuglösung enthalten

Wenn der Benutzercode nicht in der CodeBehind-Datei enthalten ist oder Sie die Assembly nicht mit Debuginformationen registriert haben, wird der Quellcode nicht automatisch in die Debuglösung einbezogen. In diesem Fall müssen Sie zusätzliche Schritte ausführen, um den Quellcode hinzuzufügen:

  1. Klicken Sie mit der rechten Maustaste auf die Projektmappe VertexDebug, und klicken Sie anschließend auf „Hinzufügen“ > „Vorhandenes Projekt...“, um nach dem Quellcode der Assembly zu suchen und das Projekt der Debugprojektmappe hinzuzufügen.

    Screenshot des Projektmappen-Explorers in Visual Studio mit der VertexDebug-Projektmappe.

  2. Rufen Sie den Projektordnerpfad für das Projekt FailedVertexDebugHost ab.

  3. Klicken Sie mit der rechten Maustaste auf das hinzugefügte Projekt mit dem Assemblyquellcode, klicken Sie auf Eigenschaften, wählen Sie links die Registerkarte Erstellen aus, und fügen Sie den kopierten Pfad, der auf „\bin\debug“ endet, als Ausgabe > Ausgabepfad ein. Der endgültige Ausgabepfad lautet <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Screenshot der Registerkarte

Nachdem Sie diese Einstellungen vorgenommen haben, können Sie das Debuggen mit F5 und Breakpoints starten. Sie können das Problem auch mithilfe der Visual Studio-Debugtools (Überwachung, Variablen usw.) behandeln.

Hinweis

Das Projekt mit dem Assemblyquellcode muss nach jeder Änderung des Codes neu erstellt werden, um aktualisierte PDB-Dateien zu generieren.

Erneutes Übermitteln des Auftrags

Wenn das Projekt nach dem Debuggen erfolgreich abgeschlossen wird, erscheint im Ausgabefenster die folgende Meldung:

The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).

Screenshot des Ausgabefensters mit hervorgehobener Abschlusszeile.

Gehen Sie wie folgt vor, um den fehlgeschlagenen Auftrag erneut zu senden:

  1. Kopieren Sie bei Aufträgen mit CodeBehind-Projektmappen den C#-Code in die CodeBehind-Quelldatei (in der Regel Script.usql.cs).

  2. Klicken Sie für Aufträge mit Assemblys in der Debugprojektmappe mit der rechten Maustaste auf das Assembly-Quellcodeprojekt, und registrieren Sie die aktualisierten DLL-Assemblys in Ihrem Azure Data Lake-Katalog.

  3. Übermitteln Sie den U-SQL-Auftrag erneut.

Nächste Schritte