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

Belangrijk

Azure Data Lake Analytics op 29 februari 2024 buiten gebruik gesteld. Meer informatie over 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 niet door SQL-achtige declaratieve taal worden ondersteund. Zie de handleiding voor programmeerbaarheid van U-SQL voor meer informatie over U-SQL-uitbreidbaarheid.

In de praktijk kan voor elke code foutopsporing nodig zijn, 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 Mislukte vertex-foutopsporing, waarmee u eenvoudiger fouten in uw aangepaste code kunt opsporen. Wanneer de U-SQL-taak mislukt, behoudt de service de foutstatus en helpt het hulpprogramma u de omgeving met cloudfouten te downloaden naar de lokale computer voor foutopsporing. De lokale download legt de volledige cloudomgeving vast, inclusief eventuele invoergegevens en gebruikerscode.

In de volgende video ziet u mislukte foutopsporing 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.

Kan het hoekpunt niet downloaden naar de 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 fouttabblad.

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

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

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

De foutopsporingsomgeving configureren

Notitie

Voordat u fouten gaat opsporen, controleert u Common Language Runtime Exceptions in het venster Uitzonderingsinstellingen (Ctrl + Alt + E).

Schermopname van de door de gebruiker gedefinieerde C#-broncode, met de uitzonderingen-instellingen met Common Language Runtime Exceptions 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 foutopsporingsoplossing

Er zijn twee gevallen dat 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 hulpprogramma's voor foutopsporing van Visual Studio (watch, variabelen, enzovoort) gebruiken om het probleem op te lossen:

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

  2. Open het broncodebestand en stel onderbrekingspunten in en druk vervolgens op F5 om stap voor stap 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 foutopsporingsoplossing

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 foutopsporingsoplossing. 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 zoeken en het project toe te voegen aan de foutopsporingsoplossing.

    Schermopname van solution explorer in Visual Studio, met de vertexDebug-oplossing.

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

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

    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 hulpprogramma's voor foutopsporing van Visual Studio (watch, variabelen, enzovoort) gebruiken om het probleem op te lossen.

Notitie

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

Als het project na foutopsporing is voltooid, wordt in het uitvoervenster het volgende bericht weergegeven:

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 taken met oplossingen achter code 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 voor assembly's 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