Delen via


Fouten opsporen in door de gebruiker gedefinieerde C#-code voor mislukte U-SQL-taken

Belangrijk

Azure Data Lake Analytics is op 29 februari 2024 buiten gebruik gesteld. Meer informatie vindt u in deze aankondiging.

Voor gegevensanalyse kan uw organisatie gebruikmaken van Azure Synapse Analytics- of Microsoft Fabric-.

U-SQL biedt een uitbreidbaarheidsmodel met behulp van C#. In U-SQL-scripts is het eenvoudig om C#-functies aan te roepen en analytische functies uit te voeren die sql-achtige declaratieve taal niet ondersteunt. Zie de U-SQL-programmeerhandleiding voor meer informatie over U-SQL-uitbreidbaarheid.

In de praktijk kan elke code foutopsporing nodig hebben, maar het is moeilijk om fouten op te sporen in een gedistribueerde taak met aangepaste code in de cloud met beperkte logboekbestanden. Azure Data Lake Tools voor Visual Studio biedt een functie met de naam Failed Vertex Debug, waarmee u gemakkelijker fouten kunt opsporen die optreden in uw aangepaste code. Wanneer de U-SQL-taak mislukt, behoudt de service de foutstatus en helpt het hulpprogramma u bij het downloaden van de omgeving met cloudfouten naar de lokale computer voor foutopsporing. De lokale download legt de hele cloudomgeving vast, inclusief invoergegevens en gebruikerscode.

In de volgende video ziet u de debug-functie voor mislukte vertices in Azure Data Lake Tools voor Visual Studio.

Belangrijk

Visual Studio vereist de volgende twee updates voor het gebruik van deze functie: Microsoft Visual C++ 2015 Redistributable Update 3 en de Universal C Runtime voor Windows.

Mislukte download van vertex naar lokale computer

Wanneer u een mislukte taak opent in Azure Data Lake Tools voor Visual Studio, ziet u een gele waarschuwingsbalk met gedetailleerde foutberichten op het tabblad Fout.

  1. Selecteer Downloaden om alle vereiste resources en invoerstromen te downloaden. Als het downloaden niet is voltooid, selecteert u Opnieuw.

  2. Selecteer Openen nadat het downloaden is voltooid om een lokale foutopsporingsomgeving te genereren. Er wordt een nieuwe oplossing voor foutopsporing geopend en als u een bestaande oplossing hebt geopend in Visual Studio, moet u deze opslaan en sluiten voordat u foutopsporing uitvoert.

Schermopname van een Data Lake Analytics-taak in USQL met de knop Downloaden gemarkeerd.

De foutopsporingsomgeving configureren

Opmerking

Voordat u fouten opspoort, controleert u Common Language Runtime-uitzonderingen in het venster Uitzonderingsinstellingen (Ctrl + Alt + E).

Schermopname van de door de gebruiker gedefinieerde C#-broncode met de instellingen voor uitzonderingen met Common Language Runtime-uitzonderingen ingesteld.

In het nieuw gestarte Visual Studio-exemplaar kunt u de door de gebruiker gedefinieerde C#-broncode al dan niet vinden:

  1. Ik kan mijn broncode vinden in de oplossing

  2. Ik kan mijn broncode niet vinden in de oplossing

Broncode is opgenomen in de oplossing voor foutopsporing

Er zijn twee gevallen waarin de C#-broncode wordt vastgelegd:

  1. De gebruikerscode wordt gedefinieerd in het code-behind-bestand (meestal genoemd Script.usql.cs in een U-SQL-project).

  2. De gebruikerscode wordt gedefinieerd in het C#-klassebibliotheekproject voor de U-SQL-toepassing en geregistreerd als assembly met foutopsporingsgegevens.

Als de broncode wordt geïmporteerd in de oplossing, kunt u de Visual Studio-hulpprogramma's voor foutopsporing (watch, variables, enzovoort) gebruiken om het probleem op te lossen:

  1. Druk op F5 om foutopsporing te starten. De code wordt uitgevoerd totdat deze door een uitzondering wordt gestopt.

  2. Open het broncodebestand en stel onderbrekingspunten in en druk op F5 om stapsgewijs fouten in de code op te sporen.

    Schermopname van door de gebruiker gedefinieerde code met een onderbrekingspuntset, met een uitzondering op de gemarkeerde regel.

Broncode is niet opgenomen in de oplossing voor foutopsporing

Als de gebruikerscode niet is opgenomen in het code-behind-bestand of als u de assembly niet hebt geregistreerd met foutopsporingsgegevens, wordt de broncode niet automatisch opgenomen in de oplossing voor foutopsporing. In dit geval hebt u extra stappen nodig om uw broncode toe te voegen:

  1. Klik met de rechtermuisknop op Oplossing VertexDebug: > Bestaand project toevoegen > ... om de broncode van de assembly te vinden en het project toe te voegen aan de oplossing voor foutopsporing.

    Schermopname van Solution Explorer in Visual Studio, met de VertexDebug Solution.

  2. Haal het pad van de projectmap op voor het project FailedVertexDebugHost .

  3. Right-Click de toegevoegde eigenschappen van het assemblybroncodeproject>, selecteert u het tabblad Opbouwen links en plakt u het gekopieerde pad dat eindigt op \bin\debug als uitvoerpad>. Het uiteindelijke uitvoerpad is <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Schermopname van het tabblad Build in Visual Studio Code, met het uitgaande pad gemarkeerd onder Uitvoer.

Na deze instellingen begint u met foutopsporing met F5 en onderbrekingspunten. U kunt ook de Visual Studio-foutopsporingsprogramma's (watch, variables, enzovoort) gebruiken om het probleem op te lossen.

Opmerking

Bouw het broncodeproject van de assembly telkens opnieuw op nadat u de code hebt gewijzigd om bijgewerkte .pdb-bestanden te genereren.

De taak opnieuw indienen

Na het debuggen, als het project succesvol wordt afgerond, wordt het volgende bericht weergegeven in het uitvoervenster:

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

Schermopname van het uitvoervenster, met de voltooiingsregel gemarkeerd.

De mislukte taak opnieuw indienen:

  1. Voor projecten met code-behind oplossingen kopieert u de C#-code naar het code-behind bronbestand (meestal Script.usql.cs).

  2. Voor taken met assembly's klikt u met de rechtermuisknop op het broncodeproject van de assembly in de oplossing voor foutopsporing en registreert u de bijgewerkte .dll assembly's in uw Azure Data Lake-catalogus.

  3. Verzend de U-SQL-taak opnieuw.

Volgende stappen