Javascript回溯
如何在Javascript中获取回溯 理想功能:Javascript回溯,javascript,reflection,callstack,backtrace,Javascript,Reflection,Callstack,Backtrace,如何在Javascript中获取回溯 理想功能: 输入函数名,或匿名函数的某个有意义的标识符 每个级别的参数列表 行号 这可以在标准ECMAScript中完成吗 如果没有,可以用常见的web浏览器方言进行吗 谢谢 编辑-- 谢谢你的建议 我的方言不支持参数。调用者或参数。被调用者 我可以这样做: try { let x = null; x .foo (); } catch (e) { debug (dump (e.stack)); } 它以字符串的形式向我提
- 输入函数名,或匿名函数的某个有意义的标识符
- 每个级别的参数列表
- 行号
参数。调用者
或参数。被调用者
我可以这样做:
try {
let x = null;
x .foo ();
}
catch (e) {
debug (dump (e.stack));
}
它以字符串的形式向我提供信息,这对我来说是一个很好的概览,但是如果能步行e.stack
,那将是一个很大的帮助。它有标准表格吗
再次感谢。在我的调试经验中,我总是使用这个
(function () { console.log(new Error().stack); })();
正如下面的评论所建议的,读者应该更喜欢:
log(新错误().stack) 这个库:在任何地方都可以使用,而不仅仅是错误
例如:
StackTrace.get()
.then(stack => { console.log(stack) })
.catch(err => { console.log(err) });
另一种方法是使用
console.trace()代码>
来源:获取strack跟踪的最佳方法是使用基于浏览器的调试器。您的方言是什么?什么是dump
?它是一种专有方言,似乎大部分是完整的,有一些扩展。为什么要使用额外的函数包装器?你不能只使用console.log(newerror().stack)代码>?它对我起作用了。我不认为有任何理由使用包装器函数。我喜欢干净的全局范围。因此,我添加了一个包装器。添加包装器函数显然会在堆栈顶部添加一个额外的函数(毫无意义?),使您关心的代码降低一步。我建议读者不要这样做,idk,如果海报有这样的理由,所以我不会改变答案。