Apakah ada cara untuk mendapatkan lebih dari 10 baris dalam kesalahan tumpukan 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);
}
acara:
$ 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)
Apakah ada cara untuk mendapatkan lebih dari 10 panggilan?
node.js
stack-trace
Julien Genestoux
sumber
sumber
Jawaban:
Solusi termudah untuk itu adalah memulai kode Anda dengan yang berikut:
Jika Anda ingin melihat pelacakan tumpukan yang mencakup panggilan setTimeout / setInterval, maka https://github.com/mattinsler/longjohn yang lebih canggih adalah cara yang tepat.
sumber
stackTraceLimit
. Juga, itu hanya mempengaruhi apa yang Anda dapatkanError.stack
dari apa yang saya bisa lihat. Debugger bawaan selalu menampilkan tumpukan penuh (bt
perintah).--inspect
atau--inpect-brk
perintahAnda dapat meneruskan batas pelacakan tumpukan sebagai parameter baris perintah ke
node
:node --stack-trace-limit=1000 debug.js
// default 10BTW, hal lain yang kedengarannya tidak mungkin terjadi, tetapi hanya menyia-nyiakan beberapa jam waktu saya untuk debugging, adalah ukuran tumpukan (yang defaultnya 492 kB) . Anda dapat mengalami kesalahan yang sangat tidak informatif jika tumpukan habis (
RangeError
tanpa info tambahan). Anda dapat meningkatkan ukuran tumpukan dengan :node --stack-size=1024 debug.js
// default 492Dalam dunia rantai callback-to-callback-to-callback, sebenarnya sangat mudah untuk melebihi ukuran tumpukan untuk ukuran input yang besar, jika program tidak ditulis dalam pikiran ini.
Untuk melihat semua opsi terkait tumpukan:
node --v8-options | grep -B0 -A1 stack
sumber
NODE_OPTIONS
variabel lingkungan, misNODE_OPTIONS='--stack-trace-limit=10000' /path/to/some-script
. Berguna jika Anda tidak memohonnode
secara langsung.Gunakan modul https://github.com/tlrobinson/long-stack-traces .
sumber
Anda juga dapat menggunakan debugger bawaan , yang membuka debugger dev-tools Google Chrome yang sudah dikenal. Itu berhenti pada kesalahan apa pun dan Anda dapat menelusuri seluruh tumpukan. Lari saja:
sumber