Maison > interface Web > js tutoriel > le corps du texte

En savoir plus sur le débogage des programmes nodejs

青灯夜游
Libérer: 2021-06-01 09:14:55
avant
2216 Les gens l'ont consulté

En savoir plus sur le débogage des programmes nodejs

Pour les développeurs, dans le processus de développement d'applications, ils ont souvent besoin de recourir à la fonction de débogage du langage de programmation pour faciliter le développement et résoudre les bugs. D'une manière générale, nous devons utiliser la fonction de débogage d'un IDE puissant pour terminer ce travail. nodejs ne fait pas exception.

Aujourd'hui, nous allons présenter en détail comment déboguer un programme nodejs.

Activer le débogage nodejs

Vous souvenez-vous encore du programme koa dont nous avons parlé auparavant ? Cet article prendra comme exemple un simple programme serveur koa pour démarrer le débogage de nodejs.

Regardons d'abord un simple service koa app.js :

const Koa = require('koa');
const app = module.exports = new Koa();

app.use(async function(ctx) {
  ctx.body = 'Hello World';
});

if (!module.parent) app.listen(3000);
Copier après la connexion

Le programme ci-dessus ouvre le port 3000 et établit un service http. Chaque fois qu'une demande est faite, hello World sera renvoyé, ce qui est très simple.

Pour exécuter le programme ci-dessus, nous devons exécuter node app.js. Cela exécutera app.js mais n'activera pas le débogage. [Apprentissage recommandé : "Tutoriel nodejs"]

Comment déboguer ?

Nous devons ajouter le paramètre --inspect :

node --inspect app.js
Copier après la connexion
Copier après la connexion

Le code ci-dessus activera la fonction de débogage de nodejs.

Jetons un coup d'œil au résultat :

Debugger listening on ws://127.0.0.1:9229/88c23ae3-9081-41cd-98b0-d0f7ebceab5a
For help, see: https://nodejs.org/en/docs/inspector
Copier après la connexion

Le résultat nous dit deux choses. La première chose est le port que le débogueur écoute. Par défaut, le port 9229 de 127.0.0.1 sera ouvert. Et attribué un UUID unique pour la différenciation.

La deuxième chose est de nous dire que le débogueur utilisé par nodejs est Inspector.

Inspector a été introduit après nodejs 8. Si c'est avant nodejs 7, alors l'ancien débogueur est utilisé.

Sécurité du débogage

Si le débogueur est connecté à l'environnement d'exécution de nodejs, s'il existe un attaquant malveillant, l'attaquant malveillant peut exécuter du code arbitraire dans l'environnement nodejs. Cela entraînera de grands risques de sécurité pour notre programme.

Nous devons donc faire attention à la sécurité du débogage. De manière générale, nous déconseillons le débogage à distance.

Par défaut, --inspect est lié à 127.0.0.1, ce qui autorise uniquement l'accès aux programmes locaux. Et tout programme exécuté localement est autorisé à déboguer le programme.

Si nous voulons vraiment exposer le programme de débogage à des programmes externes, nous pouvons spécifier l'adresse IP externe de la machine ou 0.0.0.0 (indiquant n'importe quelle adresse, aucune restriction), afin que la machine distante puisse effectuer des tâches à distance. Débogué.

Que devons-nous faire si nous voulons effectuer un débogage à distance en toute sécurité ?

Tout d'abord, nous devons activer le débogage local :

node --inspect app.js
Copier après la connexion
Copier après la connexion

Ensuite, nous pouvons créer un tunnel ssh pour mapper le port 9221 local au port 9229 du serveur distant :

ssh -L 9221:localhost:9229 user@remote.example.com
Copier après la connexion

Dans de cette façon, nous pouvons effectuer un débogage à distance en nous connectant au port local 9221.

Utiliser WebStorm pour le débogage de nodejs

WebStorm produit par JetBrains peut être considéré comme un outil puissant pour développer nodejs. WebStorm possède sa propre option de débogage. Si cette option est activée, elle le sera. activé en arrière-plan --inspect :

L'utilisation de WebStorm pour le débogage est similaire à l'utilisation d'IDEA pour le débogage d'un programme Java, je n'entrerai donc pas dans les détails ici.

Utiliser Chrome devTools pour le débogage

La condition préalable à l'utilisation de Chrome devTools pour le débogage est que nous avons activé le mode --inspect.

Entrez chrome://inspect dans chrome :

Nous pouvons voir l'interface d'inspection de Chrome, si vous avez déjà un programme nodejs pour lequel l'inspection est activée localement Si tel est le cas, vous pouvez le voir directement dans Remote Target.

Sélectionnez la cible que vous souhaitez déboguer et cliquez sur inspecter pour ouvrir l'outil de débogage Chrome devTools :

Vous pouvez profiler le programme et le déboguer.

Ici, nous nous concentrons sur le débogage, alors allez dans la colonne source et ajoutez le code source du programme que vous souhaitez déboguer :

Ajoutez simplement un point d'arrêt Le débogage a commencé. C'est la même chose que le débogage de js côté Web dans Chrome.

Utilisez node-inspect pour le débogage

En fait, nodejs dispose d'un outil de débogage intégré appelé node-inspect, qui est un outil de débogage cli. Voyons comment l'utiliser.

Nous utilisons directement :

node inspect app.js

< Debugger listening on ws://127.0.0.1:9229/f1c64736-47a1-42c9-9e9e-f2665073d3eb
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in app.js:1
> 1 const Koa = require(&#39;koa&#39;);
  2 const app = module.exports = new Koa();
  3 
debug>
Copier après la connexion

node inspect fait deux choses. La première chose est de générer un sous-programme pour exécuter node --inspect app.js. La deuxième chose est d'exécuter le débogage CLI. fenêtre dans le programme.

Ce débogueur CLI nous fournit quelques commandes très utiles :

  1. Pas à pas
  • cont, c : Continuer l'exécution
  • suivant, n : Passer à l'étape suivante
  • étape, s : Entrez
  • sortez, o : sortez
  • pause : suspendez l'exécution du code
  1. Points d'arrêt
  • setBreakpoint(), sb() : Définir un point d'arrêt sur la ligne actuelle
  • setBreakpoint(line), sb(line) : Définir un point d'arrêt sur la ligne spécifiée
  • setBreakpoint('fn() ' ), sb(…) : Définir un point d'arrêt dans la fonction spécifiée
  • setBreakpoint('script.js', 1), sb(…) : Définir un point d'arrêt dans le fichier de script spécifié
  • clearBreakpoint('script.js', 1), cb(…) : Effacer les points d'arrêt du fichier
  1. Informations
  • backtrace, bt : Imprimer les informations de backtrace du frame d'exécution actuel
  • list(5) : Lister les 5 lignes avant et après le code source
  • watch(expr) : Ajouter une expression de surveillance
  • unwatch(expr) : supprime l'expression de surveillance
  • watchers : liste tous les observateurs
  • repl : ouvre l'expression repl
  • exec expr : exécute l'expression

Grâce aux commandes ci-dessus, nous pouvons effectuer des activités de débogage plus complexes dans la CLI.

Autres clients de débogage

En plus de ceux que nous avons mentionnés ci-dessus, nous pouvons également utiliser vscode, Visual Studio, Eclipse IDE, etc. pour déboguer les nodejs, qui ne sont pas les mêmes ici One. est présenté en détail.

Les amis intéressés peuvent explorer par eux-mêmes.

Auteur de cet article : Choses à propos du programme flydean

Lien vers cet article : http://www.flydean.com/nodejs-debug/

Source de cet article : flydean Blog

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à 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:csdn.net
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!