Techniques de débogage utilisées dans le navigateur
(alan.norbauer.com)Astuces pour exploiter le débogueur du navigateur
-
Points d’arrêt conditionnels avancés
- Étendre les capacités des points d’arrêt conditionnels en utilisant des expressions avec effets de bord
- Les logpoints/tracepoints permettent d’écrire des logs dans la console sans interrompre l’exécution
- Utiliser
console.countpour compter le nombre d’exécutions - Les principaux navigateurs prennent en charge les logpoints/tracepoints (en date de mai 2020)
-
Exploiter la fenêtre de surveillance
- Il est possible d’utiliser
console.logdans la fenêtre de surveillance - Définir un point d’arrêt sur les modifications du DOM puis ajouter une expression de surveillance pour exécuter une expression au moment où le DOM change
- Il est possible d’utiliser
-
Suivi de la pile d’appels
- Suivre la pile d’appels des fonctions pour trouver les appels incohérents
- Utiliser
console.tracedans un point d’arrêt conditionnel pour vérifier la pile d’appels
-
Modifier le comportement du programme
- Il est possible de modifier à la volée le comportement du programme directement dans le navigateur
- Remplacer les paramètres de fonction pour ajuster le comportement
-
Profilage de performances simple
- Utiliser l’API de timing de la console pour mesurer le temps d’exécution du code
- Utiliser
console.time('label')etconsole.timeEnd('label')pour mesurer le temps
-
Exploiter l’arité des fonctions
- N’activer un point d’arrêt que lorsque l’appel se fait avec un nombre précis d’arguments
- Utile pour repérer les écarts dans le nombre d’arguments lors des appels de fonction
-
Exploiter le temps
- N’activer un point d’arrêt qu’après un certain délai suivant le chargement de la page
- Ignorer les points d’arrêt pendant une durée donnée, puis ne les activer qu’ensuite
-
Exploiter le CSS
- Activer un point d’arrêt en fonction de valeurs CSS calculées
-
Ne s’arrêter que sur les appels pairs
- N’activer un point d’arrêt que lors des exécutions paires
-
S’arrêter par échantillonnage
- N’activer un point d’arrêt que sur des échantillons aléatoires de l’exécution
-
Ne pas s’arrêter sur une ligne précise
- Utiliser l’option "Never Pause Here" pour éviter toute interruption sur une ligne donnée
-
Attribution automatique d’ID d’instance
- Attribuer automatiquement un ID unique à chaque instance de classe
-
Bascule par programmation
- Utiliser un booléen global pour activer ou désactiver un point d’arrêt conditionnel par programmation
-
Appel de classe avec
monitor()- Utiliser la commande
monitorde Chrome pour suivre les appels de méthodes de classe
- Utiliser la commande
-
Appels de fonction et débogage
- Appeler une fonction depuis la console après avoir invoqué
debuggerafin de la déboguer
- Appeler une fonction depuis la console après avoir invoqué
-
Interrompre l’exécution lors d’un changement d’URL
- Interrompre l’exécution avant un changement d’URL dans une application monopage
-
Débogage de lecture de propriété
- Activer un point d’arrêt chaque fois qu’une propriété d’objet est lue
-
Utiliser
copy()- Utiliser l’API de console
copy()pour copier directement des informations vers le presse-papiers depuis le navigateur
- Utiliser l’API de console
-
Débogage HTML/CSS
- Utiliser la console JS pour diagnostiquer des problèmes HTML/CSS
- Inspecter le DOM lorsque JS est désactivé
- Inspecter des éléments du DOM qui n’apparaissent que sous certaines conditions
- Enregistrer des instantanés du DOM
- Surveiller l’élément ayant le focus
- Trouver les éléments en gras
- Référencer l’élément actuellement sélectionné
- Surveiller les événements
L’avis de GN⁺
Le point le plus important de cet article est qu’il présente un ensemble varié de techniques et d’astuces permettant aux développeurs d’utiliser le débogueur du navigateur pour déboguer leur code plus efficacement et résoudre les problèmes. Ces informations sont très utiles pour les développeurs logiciels et particulièrement intéressantes, car elles peuvent faire gagner du temps lorsqu’il s’agit de traquer des bugs complexes ou de résoudre des problèmes de performances.
1 commentaires
Avis Hacker News
Évolution des outils de débogage intégrés au navigateur
Utilisation de l’instruction debugger
debugger;serait la seule façon de venir à bout de la pile récursive du débogueur de Chrome.Difficultés du débogage backend NodeJS
pdb.set_trace()/IEx.pry().console.log, ce qui lui a semblé très rudimentaire.Recommandation de Werkzeug
Comment accéder aux variables locales d’une IIFE
Méthode de débogage via les chaînes de l’interface utilisateur
debugger.Débogage avec des points d’arrêt conditionnels
{configOption: true}en{get configOption() { debugger; return true; }}.Fonction spécifique à Chrome : « Monitor Events for Element »
Absence de l’API
queryObjectsqueryObjects, qui renvoie la liste de tous les objets créés par un constructeur donné.queryObjects(Function)permet d’obtenir la liste de toutes les fonctions présentes dans le tas mémoire.Difficultés d’utilisation des variables observées