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

Für U-SQL wird ein Erweiterbarkeitsmodell mit C# bereitgestellt. In U-SQL-Skripts ist es einfach, C#-Funktionen aufzurufen und Analysefunktionen durchzufü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 muss das Debuggen ggf. für jeden Code durchgeführt werden. Aber es ist schwierig, einen verteilten Auftrag mit benutzerdefiniertem Code in der Cloud zu debuggen, wenn nur eingeschränkte Protokolldateien vorhanden sind. 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. Klicken Sie auf Herunterladen , um alle erforderlichen Ressourcen und Eingabedatenströme herunterzuladen. Sollte der Downloadvorgang nicht abgeschlossen werden, klicken Sie auf Wiederholen.

  2. Klicken Sie nach Abschluss des Downloadvorgangs auf Öffnen, 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.

Azure Data Lake Analytics U-SQL debug visual studio download vertex

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.

Azure Data Lake Analytics U-SQL debug visual studio setting

Es kann sein, dass Sie den benutzerdefinierten C#-Quellcode in der neu gestarteten Visual Studio-Instanz finden oder auch nicht:

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

  2. Ich kann meinen Quellcode nicht in der Lösung 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.

    Azure Data Lake Analytics U-SQL debug exception

Quellcode ist nicht in Debugprojektmappe 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 Debugprojektmappe eingebunden. 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.

    Azure Data Lake Analytics U-SQL debug add project

  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\.

    Azure Data Lake Analytics U-SQL debug set pdb path

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).

Azure Data Lake Analytics U-SQL debug succeed

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