¿Hay alguna manera de obtener más de 10 líneas en un error de pila de 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);
}
muestra:
$ 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 alguna forma de recibir más de 10 llamadas?
node.js
stack-trace
Julien Genestoux
fuente
fuente
Respuestas:
La solución más fácil para eso es iniciar su código con lo siguiente:
Si desea ver el seguimiento de la pila que abarca las llamadas setTimeout / setInterval, entonces https://github.com/mattinsler/longjohn más sofisticado sería el camino a seguir.
fuente
stackTraceLimit
. Además, afecta solo lo que entrasError.stack
por lo que puedo ver. El depurador incorporado siempre muestra la pila completa (bt
comando).--inspect
o--inpect-brk
Puede pasar el límite de seguimiento de la pila como un parámetro de línea de comando a
node
:node --stack-trace-limit=1000 debug.js
// predeterminado 10Por cierto, otra cosa que parece poco probable que suceda, pero que solo desperdicié algunas horas de mi tiempo para depurar, es el tamaño de la pila (que por defecto es 492 kB) . Puede tener errores muy poco informativos si la pila está agotada (
RangeError
sin información adicional). Puede aumentar el tamaño de la pila con :node --stack-size=1024 debug.js
// predeterminado 492En el mundo de los encadenamientos de devolución de llamada a devolución de llamada a devolución de llamada, de hecho es muy fácil exceder el tamaño de la pila para tamaños de entrada grandes, si el programa no está escrito en esto en mente.
Para ver todas las opciones relacionadas con la pila:
node --v8-options | grep -B0 -A1 stack
fuente
NODE_OPTIONS
variable de entorno, por ejemploNODE_OPTIONS='--stack-trace-limit=10000' /path/to/some-script
. Útil si no está invocandonode
directamente.Utilice el módulo https://github.com/tlrobinson/long-stack-traces .
fuente
También puede usar el depurador incorporado , que abre el conocido depurador de herramientas de desarrollo de Google Chrome. Se detiene ante cualquier error y puede navegar por toda la pila. Solo corre:
fuente