Existe uma maneira de obter mais de 10 linhas em um erro de pilha 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);
}
mostra:
$ 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 uma maneira de receber mais de 10 chamadas?
node.js
stack-trace
Julien Genestoux
fonte
fonte
Respostas:
A solução mais fácil para isso é iniciar seu código com o seguinte:
Se você gostaria de ver o rastreamento de pilha que se estende por chamadas setTimeout / setInterval, então https://github.com/mattinsler/longjohn seria o caminho a percorrer.
fonte
stackTraceLimit
. Além disso, afeta apenas o que você obtémError.stack
pelo que posso ver. O depurador integrado sempre exibe a pilha completa (bt
comando).--inspect
ou--inpect-brk
comandoVocê pode passar o limite de rastreamento de pilha como um parâmetro de linha de comando para
node
:node --stack-trace-limit=1000 debug.js
// padrão 10BTW, outra coisa que parece improvável de acontecer, mas apenas desperdicei algumas horas do meu tempo para depuração, é o tamanho da pilha (que o padrão é 492 kB) . Você pode ter erros muito pouco informativos se a pilha se esgotar (
RangeError
sem qualquer informação adicional). Você pode aumentar o tamanho da pilha com :node --stack-size=1024 debug.js
// padrão 492No mundo das cadeias de callback-to-callback-to-callback, é na verdade muito fácil exceder o tamanho da pilha para grandes tamanhos de entrada, se o programa não for escrito com isso em mente.
Para ver todas as opções relacionadas à pilha:
node --v8-options | grep -B0 -A1 stack
fonte
NODE_OPTIONS
variável de ambiente, por exemploNODE_OPTIONS='--stack-trace-limit=10000' /path/to/some-script
. Útil se você não estiver invocandonode
diretamente.Use o módulo https://github.com/tlrobinson/long-stack-traces .
fonte
Além disso, você pode usar o depurador integrado , que abre o conhecido depurador de ferramentas de desenvolvimento do Google Chrome. Ele pára em qualquer erro e você pode navegar por toda a pilha. Apenas corra:
fonte