Existe-t-il un moyen d'obtenir plus de 10 lignes dans une erreur de pile node.js?
function a() { dieInHell(); }
function b() { a(); }
function c() { b(); }
function d() { c(); }
function e() { d(); }
function f() { e(); }
function g() { f(); }
function h() { g(); }
function i() { h(); }
function j() { i(); }
function k() { j(); }
function l() { k(); }
function m() { l(); }
function n() { m(); }
function o() { n(); }
function p() { o(); }
function q() { p(); }
try {
q();
}
catch(e) {
console.log(e.stack);
}
spectacles :
$ node debug.js
ReferenceError: dieInHell is not defined
at a (/Users/julien/tmp/debug.js:2:5)
at b (/Users/julien/tmp/debug.js:6:5)
at c (/Users/julien/tmp/debug.js:10:5)
at d (/Users/julien/tmp/debug.js:14:5)
at e (/Users/julien/tmp/debug.js:18:5)
at f (/Users/julien/tmp/debug.js:22:5)
at g (/Users/julien/tmp/debug.js:26:5)
at h (/Users/julien/tmp/debug.js:30:5)
at i (/Users/julien/tmp/debug.js:34:5)
at j (/Users/julien/tmp/debug.js:38:5)
Existe-t-il un moyen de recevoir plus de 10 appels?
node.js
stack-trace
Julien Genestoux
la source
la source
Réponses:
La solution la plus simple pour cela est de démarrer votre code avec les éléments suivants:
Si vous souhaitez voir une trace de pile qui s'étend sur les appels setTimeout / setInterval, alors https://github.com/mattinsler/longjohn plus sophistiqué serait la voie à suivre.
la source
stackTraceLimit
. De plus, cela n'affecte que ce que vous obtenez àError.stack
partir de ce que je peux voir. Le débogueur intégré affiche toujours la pile complète (bt
commande).--inspect
or--inpect-brk
Vous pouvez transmettre la limite de trace de pile en tant que paramètre de ligne de commande à
node
:node --stack-trace-limit=1000 debug.js
// par défaut 10BTW, une autre chose qui semble improbable, mais qui a perdu quelques heures de mon temps pour le débogage, est la taille de la pile (qui par défaut est de 492 ko) . Vous pouvez avoir des erreurs très peu informatives si la pile est épuisée (
RangeError
sans aucune information supplémentaire). Vous pouvez augmenter la taille de la pile avec :node --stack-size=1024 debug.js
// par défaut 492Dans le monde des chaînages callback-to-callback-to-callback, il est en fait très facile de dépasser la taille de la pile pour les grandes tailles d'entrée, si le programme n'est pas écrit dans cet esprit.
Pour voir toutes les options liées à la pile:
node --v8-options | grep -B0 -A1 stack
la source
NODE_OPTIONS
variable d'environnement, par exempleNODE_OPTIONS='--stack-trace-limit=10000' /path/to/some-script
. Utile si vous n'invoquez pasnode
directement.Utilisez le module https://github.com/tlrobinson/long-stack-traces .
la source
Vous pouvez également utiliser le débogueur intégré , qui ouvre le débogueur familier des outils de développement de Google Chrome. Il s'arrête sur toute erreur et vous pouvez parcourir la pile entière. Exécutez simplement:
la source