Débogage de code C# défini par l’utilisateur pour des travaux U-SQL ayant échoué

Important

Azure Data Lake Analytics mis hors service le 29 février 2024. Découvrez-en plus avec cette annonce.

Pour l’analytique des données, votre organization peut utiliser Azure Synapse Analytics ou Microsoft Fabric.

U-SQL fournit un modèle d’extensibilité à l’aide de C#. Dans les scripts U-SQL, il est facile d’appeler des fonctions C# et d’effectuer des fonctions analytiques que le langage déclaratif de type SQL ne prend pas en charge. Pour en savoir plus sur l’extensibilité U-SQL, consultez le Guide de programmabilité U-SQL.

Dans la pratique, n’importe quel code peut nécessiter un débogage, mais il est difficile de déboguer un travail distribué avec du code personnalisé sur le cloud avec des fichiers journaux limités. Azure Data Lake Tools pour Visual Studio fournit une fonctionnalité appelée Débogage d’échec du vertex qui facilite le débogage des défaillances se produisant dans votre code personnalisé. En cas d’échec d’une tâche U-SQL, le service conserve l’état d’échec, et l’outil permet de télécharger l’environnement de défaillance du cloud sur l’ordinateur local en vue de l’opération de débogage. Le téléchargement local capture l’environnement cloud en entier, y compris les données d’entrée et le code utilisateur.

La vidéo suivante montre la fonctionnalité Débogage d'échec du vertex dans Azure Data Lake Tools pour Visual Studio.

Important

Visual Studio a besoin des deux mises à jour suivantes pour utiliser cette fonctionnalité : Microsoft Visual C++ 2015 Redistributable Update 3 et Universal C Runtime pour Windows.

Télécharger le vertex ayant échoué sur l’ordinateur local

Lorsque vous ouvrez un travail ayant échoué dans Azure Data Lake Tools pour Visual Studio, vous voyez une barre d’alerte jaune avec des messages d’erreur détaillés sous l’onglet d’erreur.

  1. Sélectionnez Télécharger pour télécharger toutes les ressources et flux d’entrée requis. Si le téléchargement ne se termine pas, sélectionnez Réessayer.

  2. Sélectionnez Ouvrir une fois le téléchargement terminé pour générer un environnement de débogage local. Une nouvelle solution de débogage va s’ouvrir. Si vous avez une solution existante ouverte dans Visual Studio, veillez à l’enregistrer et à la fermer avant d’entamer le débogage.

Capture d’écran d’un travail Data Lake Analytics dans USQL avec le bouton Télécharger mis en surbrillance.

Configurer l’environnement de débogage

Notes

Avant de déboguer, vérifiez que vous avez activé Exceptions Common Language Runtime dans la fenêtre Paramètres d'exception (Ctrl+Alt+E).

Capture d’écran du code source C# défini par l’utilisateur, montrant les paramètres d’exceptions avec le Common Language Runtime Exceptions défini.

Dans le nouveau instance Visual Studio lancé, vous pouvez trouver ou non le code source C# défini par l’utilisateur :

  1. Je trouve mon code source dans la solution

  2. Je ne trouve pas mon code source dans la solution

Le code source est inclus dans la solution de débogage

Il existe deux cas pour lesquels le code source C# est capturé :

  1. Le code utilisateur est défini dans le fichier code-behind (généralement nommé Script.usql.cs dans un projet U-SQL).

  2. Le code utilisateur est défini dans un projet de bibliothèque de classes C# pour l’application U-SQL, et inscrit en tant qu’assembly dans les informations de débogage.

Si le code source est importé dans la solution, vous pouvez vous servir des outils de débogage de Visual Studio (espion, variables, etc.) pour résoudre le problème :

  1. Appuyez sur F5 pour démarrer le débogage. Le code s’exécute jusqu’à ce qu’il soit arrêté par une exception.

  2. Ouvrez le fichier de code source et définissez des points d’arrêt, puis appuyez sur F5 pour déboguer le code pas à pas.

    Capture d’écran du code défini par l’utilisateur avec un point d’arrêt défini, montrant une exception sur la ligne en surbrillance.

Le code source n’est pas inclus dans la solution de débogage

Si le code utilisateur n’est pas inclus dans le fichier code-behind ou si vous n’avez pas inscrit l’assembly avec les informations de débogage, le code source n’est pas inclus automatiquement dans la solution de débogage. Dans ce cas, vous avez besoin d’étapes supplémentaires pour ajouter votre code source :

  1. Cliquez avec le bouton droit sur Solution « VertexDebug » > Ajouter > Projet existant... pour rechercher le code source de l’assembly et ajouter le projet à la solution de débogage.

    Capture d’écran de l’Explorateur de solutions dans Visual Studio, montrant la solution VertexDebug.

  2. Récupérez le chemin du dossier du projet pour le projet FailedVertexDebugHost.

  3. Cliquez avec le bouton droit sur le projet du code source de l’assembly ajouté > Propriétés, sélectionnez l’onglet Générer à gauche, puis collez le chemin copié finissant par \bin\debug en tant que Sortie > Chemin de sortie. Le chemin de sortie final ressemble à <DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\.

    Capture d’écran de l’onglet build dans Visual Studio Code, avec le chemin sortant mis en évidence sous Sortie.

Après la définition de ces paramètres, démarrez le débogage avec F5 et les points d’arrêt. Vous pouvez également vous servir des outils de débogage de Visual Studio (espion, variables, etc.) pour résoudre le problème.

Notes

Régénérez le projet de code source d’assembly chaque fois vous modifiez le code, afin de générer des fichiers .pdb à jour.

Renvoyer le travail

Après le débogage, si le projet se termine correctement, la fenêtre de sortie affiche le message suivant :

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

Capture d’écran de la fenêtre de sortie, avec la ligne d’achèvement mise en surbrillance.

Pour soumettre à nouveau la tâche ayant échoué :

  1. Pour les tâches avec les solutions code-behind, copiez le code C# dans le fichier source code-behind (généralement Script.usql.cs).

  2. Pour les tâches avec les assemblys, cliquez avec le bouton droit sur le projet du code source assembly dans la solution de débogage et inscrivez les assemblys .dll mis à jour à votre catalogue Azure Data Lake.

  3. Soumettez à nouveau la tâche U-SQL.

Étapes suivantes