如何在node.js中debugging`RangeError:最大调用堆栈大小超出`错误

我的同事和我写了一个node.js应用程序。 我本周被指派去debugging一个问题。 问题是应用程序每隔几天就会崩溃,出现这个错误:

events.js:0 (function (exports, require, module, __filename, __dirname) { // Copyright Joy ^ RangeError: Maximum call stack size exceeded 

不幸的是,它不打印任何东西。

我可以使用node.js的哪些node.js方法和工具来debugging这个问题? 我们的应用程序非常庞大(它为整个校园文件查找程序提供支持),所以我们不知道这个错误发生在哪里(源代码有很多文件)。

从你的描述来看(每隔几天它就会崩溃,大概是在相同的时间之后),听起来好像可能有一个线程的堆栈随着时间的推移而递增。 要看到这一点,我会等待一天左右,然后使用ProcDump来强制任何容器应用程序实际执行JavaScript的核心转储。 打开核心文件,像WinDbg的东西,并寻找与荒谬的数量的堆栈框架的线程 – 这可以说明你的问题。

如果你没有工具,创build一个。 你应该数值函数调用,我的意思是你应该在函数中插入这样的内容:

 function(...) { callCounter[module]++; console.log("module:",module,"count:",callCounter[module]); ... callCounter[module]--; } // fn() 

是的,它会泛滥的屏幕,( 编辑:),所以你可以捕捉它。 (这句话不知怎么消失了,几天后又重新加了一句。)