是否可以在Node中获取整个堆栈跟踪?以下脚本应打印100个项目,但只能打印10个项目。请注意,它确实可以在Chrome中工作,而在Node中却不能。 (要运行下面的代码片段并查看结果,您实际上需要打开浏览器的开发工具。)
function trace(depth = 100) {
if (!depth) {
console.trace();
} else {
trace(depth - 1);
}
}
trace();
我也尝试了new Error().stack
方法,但这会打印相同数量的行。与stack.trace()
不同,此方法还只能在Chrome中显示10个项目。
function trace(depth = 100) {
if (!depth) {
console.info(new Error().stack);
} else {
trace(depth - 1);
}
}
trace();
调试器知道整个堆栈跟踪,更不用说JS引擎本身需要能够遍历堆栈进行关闭,因此必须有一种方法。
答案 0 :(得分:5)
在您的代码中,您需要声明:
Error.stackTraceLimit = Infinity;
这对OP中的两种方法都适用。