Maison > interface Web > js tutoriel > Quelques moyens rapides et faciles de déboguer les programmes Node.js

Quelques moyens rapides et faciles de déboguer les programmes Node.js

青灯夜游
Libérer: 2020-08-31 10:30:06
avant
2433 Les gens l'ont consulté

Quelques moyens rapides et faciles de déboguer les programmes Node.js

Il y a toujours divers défis lors du débogage d'un programme. Le flux de travail asynchrone de Node.js ajoute une complexité supplémentaire à ce processus ardu. Bien que le moteur V8 ait effectué quelques mises à jour pour faciliter l'accès aux traces de pile asynchrones, dans de nombreux cas, nous ne rencontrons que des erreurs sur le thread principal du programme, ce qui rend le débogage quelque peu difficile. De même, lorsque notre programme Node.js plante, nous devons souvent s'appuyer sur un outil CLI sophistiqué pour analyser le core dump.

Dans cet article, nous présenterons quelques moyens simples de déboguer les programmes Node.js. [Recommandation du tutoriel vidéo : Tutoriel node js]

Logging

Bien entendu, aucune boîte à outils de développement ne propose de journalisation. Nous avons tendance à placer des instructions console.log tout au long de notre code en développement local, mais ce n'est pas une stratégie véritablement évolutive en production. Vous devrez peut-être effectuer un filtrage et un nettoyage, ou mettre en œuvre une stratégie de journalisation cohérente pour identifier les informations importantes.

Pour mettre en œuvre une stratégie de débogage appropriée orientée journalisation, utilisez un outil de journalisation comme Pino ou Winston. Ceux-ci vous permettront de définir le niveau de journalisation (INFO, WARN, ERROR) qui vous permettra d'imprimer localement des messages de journal détaillés tout en n'imprimant que les messages de journal critiques en production. Vous pouvez également diffuser ces journaux vers un agrégateur ou ailleurs, comme LogStash, Papertrail ou même Slack.

Utiliser Node Inspect et Chrome DevTools

La journalisation nous permet uniquement de comprendre pourquoi le programme ne fonctionne pas comme prévu. Pour un débogage complexe, nous souhaiterons utiliser des points d'arrêt pour examiner le comportement du code lors de son exécution.

Pour cela, vous pouvez utiliser Node Inspect. Node Inspect est un outil de débogage fourni avec Node.js. Il s'agit en réalité d'une simple implémentation des Chrome DevTools du programme qui vous permet d'ajouter des points d'arrêt, de contrôler l'exécution étape par étape, d'afficher les variables et de suivre la pile d'appels.

Il existe deux façons de démarrer Node Inspect, mais la plus simple est probablement d'appeler une application Node.js à l'aide de l'indicateur --inspect-brk :

$ node --inspect-brk $your_script_name
Copier après la connexion

Quelques moyens rapides et faciles de déboguer les programmes Node.js

Après avoir lancé le programme, accédez à l'URL chrome://inspect dans le navigateur Chrome pour accéder à Chrome DevTools. Avec Chrome DevTools, vous disposez de tout ce dont vous avez besoin pour déboguer JavaScript dans le navigateur. La fonctionnalité la plus utile est la possibilité de vérifier la mémoire. Vous pouvez prendre un instantané du tas et configurer l'utilisation de la mémoire pour comprendre comment la mémoire est allouée et où elle pourrait être divulguée.

Utilisez un IDE pris en charge

De nombreux IDE modernes ont non seulement la capacité de lancer des programmes d'une manière ou d'une autre, mais prennent également en charge le débogage des programmes Node. En plus d'avoir de nombreuses fonctionnalités trouvées dans Chrome DevTools, ils ont également leurs propres fonctionnalités, telles que la possibilité de créer des points de journal et vous permettre de créer plusieurs profils de débogage. Vous pouvez obtenir plus d'informations sur ces IDE en consultant le Guide Node.js sur les clients inspecteurs.

Utiliser NDB

Quelques moyens rapides et faciles de déboguer les programmes Node.js

Une autre option consiste à installer ndb, qui est un débogueur autonome pour Node.js, et le navigateur similaire pour DevTools, il agit comme un débogueur local isolé. Il possède également des fonctionnalités supplémentaires non disponibles dans DevTools. Il prend en charge l'édition locale, ce qui signifie que vous pouvez modifier votre code et obtenir une logique mise à jour directement prise en charge par la plate-forme de débogage. C’est idéal pour les itérations rapides. w

Débogage post-mortem

Supposons que votre programme plante en raison d'une erreur catastrophique (telle qu'une erreur d'accès à la mémoire). Ces phénomènes sont peut-être rares, mais ils surviennent, surtout si votre application s'appuie sur du code natif.

Pour enquêter sur ce type de problème, utilisez llnode. Lorsque le programme plante, les llnode cadres et objets de la pile JavaScript peuvent être vérifiés en les mappant à des objets du côté C/C++. Pour l'utiliser, vous avez d'abord besoin d'un core dump de votre programme. Pour ce faire, vous devez utiliser process.abort au lieu de process.exit pour fermer le processus dans votre code. Lorsque vous utilisez process.abort, le processus Node génère un fichier core dump à sa sortie.

Pour mieux comprendre ce que llnode peut offrir, cette vidéo présente certaines de ses fonctionnalités.

Modules de nœuds utiles

En plus de tout ce qui précède, des packages tiers sont également recommandés pour un débogage plus approfondi.

debug

Le premier s'appelle simplement debug. À l'aide du débogage, vous pouvez attribuer des espaces de noms spécifiques pour enregistrer les messages en fonction des noms de fonctions ou de modules entiers. Les messages qui sont ensuite imprimés sur la console peuvent être sélectionnés via des variables d'environnement spécifiques.

Par exemple, voici un serveur Node.js qui enregistre plusieurs messages de l'ensemble du programme et de la pile middleware, tels que sequelize, express:application et express:router :

Quelques moyens rapides et faciles de déboguer les programmes Node.js

Si nous définissons la variable d'environnement DEBUG sur express:router et lançons le même programme, seuls les messages marqués express:router sont affichés :

Quelques moyens rapides et faciles de déboguer les programmes Node.js

Par En filtrant les messages de cette manière, vous pouvez explorer en détail le comportement des différentes parties de votre programme sans avoir à modifier radicalement la journalisation de votre code.

tracer et clarifier

tracer et clarifier sont mieux utilisés ensemble.

trace Étendez votre trace de pile asynchrone en fournissant plus de détails sur la méthode asynchrone appelée, une feuille de route que Node.js ne fournit pas par défaut. clarify Aide en supprimant toutes les informations des traces de pile spécifiques aux composants internes de Node.js. Cela vous permet de vous concentrer uniquement sur les appels de fonction à votre programme.

Ces modules ne sont pas recommandés pour fonctionner dans un environnement de production ! Ils ne doivent être activés que lors du débogage dans un environnement de développement local.

Pour plus de connaissances liées à la programmation, veuillez visiter : Enseignement de la programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal