一个node.js堆栈错误超过10行?
有没有办法获得超过10行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); }
显示:
$ 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)
有10个以上的电话吗?
最简单的解决scheme是用以下代码启动代码:
Error.stackTraceLimit = Infinity;
如果你想看到跨越setTimeout / setInterval调用的堆栈跟踪,那么更复杂的https://github.com/mattinsler/longjohn就是要走的路。;
您可以将堆栈跟踪限制作为命令行parameter passing给node
:
node --stack-trace-limit=1000 debug.js
//默认10
顺便说一句,这听起来不太可能发生的另一件事情,但只是浪费了几个小时的时间来debugging,是堆栈大小(默认为492 kB) 。 如果堆栈耗尽( RangeError
没有任何附加信息),可能会产生非信息错误。 您可以通过以下方式增加堆栈大小 :
node --stack-size=1024 debug.js
默认492
在callbackcallbackcallback链接的世界中,如果程序没有写在这里,实际上很容易超过大input大小的堆栈大小。
要查看所有堆栈相关的选项:
node --v8-options | grep -B0 -A1 stack