怎么在报错时输出更加完整的包括局部变量信息的调用栈
发布于 9 年前 作者 itana 3198 次浏览 最后一次编辑是 8 年前 来自 问答

rt

8 回复

@captainblue2013 没有局部变量信息啊亲,看清楚题目再回复好吗?

@itana 那算我错了,对不起

没听说过有这样的东东, 局部变量是作用域上的概念,与其大小没有关系,也就是说理论上可以无限大,加上循环引用这些东东。怎么输出?要观察这个东西,建议实时调试。在你想要观察的地方, debugger,然后 node debug 启动。repl 进行观察,或者用 vsc ,有类以 visual stuido 的调试功能。

@klesh 理论上是可以无限大,但是应该有方法限定输出吧,比如检测循环引用,限制输出大小等等。 我遇到的问题是出现uncaught error的报错,但是不知道函数参数等局部变量的值。需要的话还需要改代码调试,很麻烦。 最好是报错了,然后顺便输出一些信息(不要求多全),方便分析解决一些问题。 线上的问题不多是可以通过调试重现解决的,或者说有些问题通过调试器解决成本太高了。

我也想知道这个。。。

#我覺得一般打印棧就夠了
console.log err.stack 

@itana 检测循环当然是可以的,但正如我前面所说,局部和全局只是一个作用域上的概念,局部变量可以引用全局的,或者别的模块的局部变量,这样体积很大。限定输出可能得不到想要观察的对象。你的情况我感觉写日志是比较实际的做法……会遇到这种情况是不是模块套模块调用比较复杂?可以的情况下还是用单元测试把每个模块的功能介定好,这样后期会轻松些,当然写测试是个痛苦的事情。

回到顶部