node.js - handling - readstream nodejs
¿Más de 10 líneas en un error de pila node.js? (4)
La solución más sencilla para eso es comenzar su código con lo siguiente:
Error.stackTraceLimit = Infinity;
Si desea ver el seguimiento de la pila que se extiende sobre las llamadas a setTimeout / setInterval, entonces https://github.com/mattinsler/longjohn más sofisticado sería el camino a seguir.
¿Hay alguna manera de obtener más de 10 líneas en un error de pila 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)
¿Hay alguna manera de obtener más de 10 llamadas?
Puede pasar el límite de seguimiento de pila como un param de línea de comando al node
:
node --stack-trace-limit=1000 debug.js
// valor predeterminado 10
Por cierto, otra cosa que parece poco probable que suceda, pero solo desperdicié unas horas de mi tiempo para la depuración, es el tamaño de la pila (que por defecto es 492 kB) . Puede tener errores muy poco informativos si la pila se agota ( RangeError
sin información adicional). Puedes aumentar el tamaño de la pila con :
node --stack-size=1024 debug.js
// predeterminado 492
En el mundo de los encadenamientos de devolución de llamada a devolución de llamada, de hecho es muy fácil exceder el tamaño de pila para tamaños de entrada grandes, si el programa no está escrito teniendo esto en cuenta.
Para ver todas las opciones relacionadas con la pila:
node --v8-options | grep -B0 -A1 stack
También puede usar el depurador integrado , que abre el depurador de herramientas de desarrollo familiar de Google Chrome. Se detiene ante cualquier error y puede navegar por toda la pila. Solo corre:
$ node --inspect debug.js
Debugger listening on port 9229.
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/remote/serve_file/...
Use el módulo https://github.com/tlrobinson/long-stack-traces .