如何在Javascript中获得回溯?
理想的特点:
- 入口函数名,或者匿名函数的一些有意义的标识符,
- 每个级别的参数列表,
- 行号。
这可以在标准ECMAScript中完成吗?
如果没有,可以在常见的web浏览器方言中完成吗?
谢谢。
编辑——
谢谢你的建议。
我的方言不支持arguments.caller
或arguments.callee
。
我可以这样做:
try {
let x = null;
x .foo ();
}
catch (e) {
debug (dump (e.stack));
}
这让我的信息作为一个字符串,这是可以一目了然,但这将是一个很大的帮助走e.stack
。它有标准形式吗?
再次感谢。
在我的调试经验中,我总是使用这个
(function () { console.log(new Error().stack); })();
根据下面的评论,读者应该更喜欢:console.log(新的错误().stack);
另一种方法是使用console.trace();
来源:https://developer.mozilla.org/en-US/docs/Web/API/Console/trace
这个lib: stacktrace-js可以在任何地方工作,不仅仅是错误。
的例子:
StackTrace.get()
.then(stack => { console.log(stack) })
.catch(err => { console.log(err) });