DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Qu’est-ce qui vous manque en déboguant dans VS Code ?
    Uncategorized

    Qu’est-ce qui vous manque en déboguant dans VS Code ?

    février 8, 2023
    Qu'est-ce qui vous manque en déboguant dans VS Code ?
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Dans le premier chapitre de mon livre de débogage, j’aborde le débogage IDE. Dans ce chapitre, je parle principalement d’IntelliJ/IDEA. Les gens me demandent souvent pourquoi je n’écris pas autant sur VS Code… La raison est qu’il n’y a pas grand chose à écrire. Son débogueur est plus simple pour le meilleur et pour le pire. Il n’est pas aussi puissant que les autres IDE. J’ai créé la vidéo suivante qui couvre le contenu de cet article :

    Ce n’est pas un claquement contre VS Code ou contre Microsoft. Visual Studio possède l’un des débogueurs les plus puissants du marché. Mais, Visual Studio Code n’a pas beaucoup de fonctionnalités de Visual Studio ou d’autres IDE. Je pense que c’est intentionnel. Je pense que c’est une décision basée sur l’expérience utilisateur dans laquelle ils ont supprimé des fonctionnalités pour simplifier la convivialité. Une chose que VS Code a bien fait a été d’exposer la fonctionnalité de point de journalisation (point de trace), afin qu’elle soit plus détectable pour le développeur occasionnel. C’est plutôt génial et cela n’aurait pas été pratique si l’IDE avait toutes les fonctionnalités principales.

    Mais il y a un prix qui vient avec la simplicité. Comme vous pouvez le voir dans le tableau suivant, de nombreuses fonctionnalités manquantes sont disponibles dans IntelliJ. Ce sont toutes des fonctionnalités que j’ai couvertes dans des articles de blog ou des vidéos. Notez que les liens vidéo dans le tableau suivant sont des liens directs vers l’heure spécifique de la vidéo.

    Fonctionnalité

    Code VS

    commentaires

    Liens

    Point d’arrêt

    ✅

    Vidéo, publication

    Point d’arrêt conditionnel

    ✅

    Vidéo, publication

    Point de journalisation/point de trace

    ✅

    Vidéo, publication

    Enjamber

    ✅

    Vidéo, publication

    Entrer dans

    ✅

    Vidéo, publication

    Sors

    ✅

    Vidéo, publication

    Continuer

    ✅

    Vidéo, publication

    Exécuter jusqu’au curseur

    ✅

    Vidéo, publication

    Retour immédiat

    ❌

    Le cadre de redémarrage est disponible

    Vidéo, publication

    Aller à la ligne

    ❌

    Vidéo, publication

    Affichage de la valeur de retour

    ✅

    (activé par défaut)

    Vidéo, publication

    Évaluer

    ✅

    Vidéo, publication

    Montre

    ✅

    Vidéo, publication

    Montre en ligne

    ❌

    Vidéo, publication

    Définir la valeur

    ✅

    Vidéo, publication

    Marquage d’objet

    ❌

    Vidéo, publication

    Points d’arrêt de la méthode

    ❌

    Vidéo, publication

    Points de surveillance sur le terrain

    ❌

    Vidéo, publication

    Points d’arrêt d’exception

    ✅

    Ils sucent sans filtres

    Vidéo, publication

    Regrouper/nommer les points d’arrêt

    ❌

    Vidéo, publication

    Désactiver les points d’arrêt

    ✅

    Vidéo, publication

    Filtres d’instances

    ❌

    Vidéo, publication

    Filtres de classe

    ❌

    Vidéo, publication

    Filtres d’appelants

    ❌

    Vidéo, publication

    Filtration

    ❌

    Filtrage des tableaux et des collections

    Vidéo, publication

    Débogueur de flux

    ❌

    Vidéo, publication

    Rendu de base

    ✅

    Très simpliste

    Vidéo, publication

    Rendu d’entrée

    ❌

    Vidéo, publication

    Rendu des annotations

    ❌

    Vidéo, publication

    Affichage du fil

    ❌

    Vidéo, publication

    Traces de pile asynchrones

    ❌

    Pas de support personnalisé

    Vidéo, publication

    Mémoire consultable

    ❌

    Vidéo, publication

    Suivre les nouvelles instances

    ❌

    Vidéo, publication

    Les fonctionnalités manquantes

    Voici un aperçu de haut niveau des fonctionnalités manquantes.

    Contrôle de flux

    Return immediatement nous permet de revenir immédiatement d’une méthode et potentiellement de retourner une valeur arbitraire. C’est fantastique lorsque vous voulez tester des cas extrêmes.

    Il existe également des fonctionnalités de suppression d’image et d’exception de lancement.

    Pour être juste, VS Code a un « restart frame », qui est similaire au « drop frame » et aussi agréable.

    Aller à la ligne nécessite un plugin pour IntelliJ. Il nous permet de faire glisser le pointeur d’exécution vers un emplacement arbitraire. Si vous avez un bogue, faites simplement glisser l’exécution en arrière et réessayez.

    Vous avez besoin de sauter une ligne de code car votre application est dans un état problématique, mais vous souhaitez toujours déboguer ?

    Faites glisser vers l’avant. C’est une fonctionnalité fantastique lorsque vous en avez besoin.

    Zone de surveillance

    Les deux IDE contiennent une montre, mais seul IntelliJ peut afficher les valeurs des variables de la montre directement dans l’éditeur lui-même. Ceci est très pratique lorsque vous regardez plusieurs valeurs. Cela nous permet de voir la pile en un coup d’œil lorsque nous parcourons le code.

    Le marquage d’objet est l’une de mes fonctionnalités obscures préférées. Il nous permet de déclarer dynamiquement une variable globale qui nous aide à suivre une valeur. Nous pouvons utiliser cette variable globale dans un point d’arrêt conditionnel pour vérifier les choses. Un tel exemple consiste à enregistrer le thread actuel en tant qu’objet marqué et à ne s’arrêter que si nous frappons la méthode avec un thread différent.

    Points d’arrêt

    Les points d’arrêt de méthode sont assez problématiques, mais ils ont des utilisations avancées. L’une des grandes valeurs est la possibilité de casser au retour d’une longue méthode. Ceci est utile pour tracer les problèmes de threading.

    Les points de surveillance de champ sont très utiles lors du suivi des mutations de champ et des nouvelles valeurs.

    Nous pouvons gérer les points d’arrêt, les nommer, les regrouper et les désactiver en tant que groupe hiérarchique. Lorsque vous traitez plusieurs tâches et que vous changez de branche au milieu d’une session de débogage, nous pouvons maintenir cette session en attente en regroupant tous les points d’arrêt.

    Lorsque nous revenons à la tâche, nous pouvons instantanément revenir en arrière !

    VS Code a des points d’arrêt d’exception, mais sans filtres, ils sont absolument nuls.

    Nous pouvons filtrer les accès aux points d’arrêt en fonction de plusieurs critères tels que l’instance, la classe ou une méthode spécifique dans la pile. J’ai passé tellement de temps à appuyer sur continuer encore et encore. Nous pouvons réduire cette douleur en utilisant ces outils.

    Tableaux, collections et flux

    Il existe un autre type de filtrage spectaculaire. Nous pouvons filtrer le contenu d’un tableau ou d’une collection directement dans la zone de surveillance ou d’évaluation. J’ai passé beaucoup de temps à fouiller dans des tableaux de données d’images avec des milliers d’éléments. C’était un cauchemar. Avec cela, nous pouvons trouver instantanément les entrées dont nous avons besoin dans une collection ou un tableau.

    Il s’agit de l’API de flux Java 8 et plus récente, qui est une construction de programmation fonctionnelle. C’est un outil fantastique, mais il rend le débogage difficile. Le débogueur de flux emprunte des concepts aux débogueurs de voyage dans le temps pour rendre le débogage de flux plus facile que le débogage normal dans certains cas.

    Rendu d’entrée

    C’est l’une des fonctionnalités les plus fantastiques auxquelles vous pouvez penser. Nous pouvons entièrement personnaliser l’apparence des entrées dans la montre. Dans la démo ici, je montre comment je peux exposer le contenu d’un objet « mappage relationnel d’objet » lorsque j’entre dans le débogueur.

    Mais c’est difficile à configurer à chaque fois pour chaque cas. Les annotations nous permettent de configurer cela globalement afin que nous puissions le voir à chaque fois pour des objets de bibliothèque spécifiques lors de l’exécution dans le débogueur.

    Thread et débogage asynchrone

    VS Code affiche les threads, mais il a une fonctionnalité d’affichage et une configurabilité très limitées. IntelliJ peut ouvrir une vue de thread dédiée, des hiérarchies et bien plus encore.

    Il prend également en charge le collage de traces de pile asynchrones pour faciliter le débogage du code asynchrone. Cela fonctionne de manière transparente avec des API bien connues, et ce qui est vraiment cool, c’est que nous pouvons utiliser des annotations pour ajouter cela à nos API personnalisées.

    Mémoire

    Nous pouvons rechercher dans la mémoire pour trouver n’importe quelle instance d’objet. Nous pouvons trouver des instances internes de VM et enquêter sur les problèmes en examinant les objets du système.

    Mieux encore, nous pouvons suivre chaque nouvelle instance d’une classe particulière. Obtenez des traces complètes de la pile pour chaque nouvelle instance créée entre un point d’arrêt et un autre. Cela peut suivre ce qui s’est passé sous le capot avec une précision chirurgicale.

    Enfin

    Il y a beaucoup de choses que je n’ai pas couvertes parce qu’il y en a tellement. Je ne pense pas que VS Code soit intrinsèquement mauvais. C’est juste parti pour la simplicité. Personnellement, je me considère comme un utilisateur expérimenté. Si vous êtes comme moi, j’espère que cet article vous a donné une idée de ce que vous manquez.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.