Freigeben über


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

Wichtig

Azure Data Lake Analytics wurde am 29. Februar 2024 eingestellt. Erfahren Sie mehr mit dieser Ankündigung.

Bei Datenanalysen kann Ihre Organisation Azure Synapse Analytics oder Microsoft Fabricverwenden.

U-SQL stellt ein Erweiterbarkeitsmodell mit C# bereit. In U-SQL-Skripts ist es einfach, C#-Funktionen aufzurufen und Analysefunktionen auszuführen, die sql-ähnliche deklarative Sprache nicht unterstützt. Weitere Informationen zur U-SQL-Erweiterbarkeit finden Sie im U-SQL-Programmierhandbuch.

In der Praxis kann jeder Code Debugging benötigen, 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 bietet ein Feature namens Failed Vertex Debug, mit dem Sie die Fehler, die in Ihrem benutzerdefinierten Code auftreten, einfacher debuggen können. Wenn der U-SQL-Auftrag fehlschlägt, behält der Dienst den Fehlerstatus bei, und das Tool hilft Ihnen, die Cloudfehlerumgebung zum Debuggen auf den lokalen Computer herunterzuladen. Der lokale Download erfasst die gesamte Cloudumgebung, einschließlich eingabedaten und Benutzercode.

Das folgende Video zeigt das fehlgeschlagene Vertex-Debugging in den Azure Data Lake Tools für Visual Studio.

Wichtig

Visual Studio erfordert die folgenden beiden Updates für die Verwendung dieses Features: Microsoft Visual C++ 2015 Redistributable Update 3 und die universelle C-Runtime für Windows.

Fehler beim Herunterladen des Vertex auf den lokalen Computer

Wenn Sie einen fehlgeschlagenen Auftrag in Azure Data Lake Tools für Visual Studio öffnen, wird auf der Registerkarte "Fehler" eine gelbe Warnungsleiste mit detaillierten Fehlermeldungen angezeigt.

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

  2. Wählen Sie "Öffnen" aus, nachdem der Download abgeschlossen ist, um eine lokale Debugumgebung zu generieren. Eine neue Debugging-Lösung wird geöffnet. Wenn Sie bereits eine Projektmappe in Visual Studio geöffnet haben, stellen Sie bitte sicher, dass Sie sie vor dem Debuggen speichern und 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 Sie im Fenster "Ausnahmeeinstellungen" (STRG+ALT+E) die Ausnahmen für Common Language Runtime-Ausnahmen überprüfen.

Screenshot des benutzerdefinierten C#-Quellcodes, der die Ausnahmeneinstellungen mit den Ausnahmen für Common Language Runtime-Ausnahmen enthält.

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

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

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

Quellcode ist in der Debuglösung enthalten

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

  1. Der Benutzercode wird in der CodeBehind-Datei definiert (in der Regel in einem U-SQL-Projekt genannt Script.usql.cs ).

  2. Der Benutzercode wird im C#-Klassenbibliotheksprojekt für 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-Debuggingtools (Überwachung, Variablen usw.) verwenden, um das Problem zu beheben:

  1. Drücken Sie F5 , um mit dem Debuggen zu beginnen. Der Code wird ausgeführt, bis er von einer Ausnahme beendet wird.

  2. Öffnen Sie die Quellcodedatei, und legen Sie Haltepunkte fest, und drücken Sie dann F5 , um den Code schritt für Schritt zu debuggen.

    Screenshot des benutzerdefinierten Codes mit einem Haltepunktsatz mit einer Ausnahme in der hervorgehobenen Zeile.

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 benötigen Sie zusätzliche Schritte zum Hinzufügen des Quellcodes:

  1. Klicken Sie mit der rechten Maustaste auf Projektmappe "VertexDebug" > Vorhandenes Projekt hinzufügen...>, um den Assemblyquellcode zu finden und das Projekt der Debugging-Lösung hinzuzufügen.

    Screenshot des Projektmappen-Explorers in Visual Studio, der die VertexDebug-Lösung zeigt.

  2. Rufen Sie den Projektordnerpfad für failedVertexDebugHost-Projekt ab.

  3. Right-Click das hinzugefügte Assemblyquellcodeprojekt > "Eigenschaften", wählen Sie die Registerkarte "Build" links aus, und fügen Sie den kopierten Pfad ein, der mit \bin\debug als Ausgabepfad >endet. Der endgültige Ausgabepfad ist wie folgt: <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Screenshot der Registerkarte

Beginnen Sie nach diesen Einstellungen mit dem Debuggen mit F5 und Haltepunkten. Sie können auch die Visual Studio-Debuggingtools (Überwachung, Variablen usw.) verwenden, um das Problem zu beheben.

Hinweis

Erstellen Sie das Assemblyquellcodeprojekt jedes Mal neu, nachdem Sie den Code geändert haben, um aktualisierte PDB-Dateien zu generieren.

Senden Sie den Auftrag erneut.

Nach dem Debuggen zeigt das Ausgabefenster die folgende Meldung an, wenn das Projekt erfolgreich abgeschlossen wurde:

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

Screenshot des Ausgabefensters mit hervorgehobener Abschlusszeile.

So übermitteln Sie den fehlgeschlagenen Auftrag erneut:

  1. Kopieren Sie für Aufträge mit CodeBehind-Lösungen den C#-Code in die CodeBehind-Quelldatei (in der Regel Script.usql.cs).

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

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

Nächste Schritte