Javascript回溯

时间:2011-07-22 08:54:03

标签: javascript reflection callstack backtrace

如何在Javascript中获得回溯?

理想功能:

  • 条目函数名称,或匿名函数的一些有意义的标识符,
  • 每个级别的参数列表,
  • 行号。

可以在标准的ECMAScript中完成吗?

如果没有,是否可以在常见的网络浏览器方言中完成?

感谢。

编辑 -

感谢您的建议。

我的方言不支持arguments.callerarguments.callee

我可以这样做:

try {
    let x = null;
    x .foo ();
}
catch (e) {
        debug (dump (e.stack));
}

以字符串形式获取信息,一目了然,但步行e.stack会很有帮助。它有标准表格吗?

再次感谢。

5 个答案:

答案 0 :(得分:23)

在我的调试经验中,我总是使用这个

(function () { console.log(new Error().stack); })();

答案 1 :(得分:4)

也许这可能对你有所帮助,但是还没有使用过它:

此链接不再有效:kallewoof.com/2006/03/15/precompiling-javascript-functions /

也看看这个:

How do you find out the caller function in JavaScript?

答案 2 :(得分:2)

另一种方法是使用 console.trace();

来源:https://developer.mozilla.org/en-US/docs/Web/API/Console/trace

答案 3 :(得分:1)

此lib:stacktrace-js适用于任何地方,不仅有错误。

示例:

StackTrace.get()
    .then(stack => { console.log(stack) })
    .catch(err => { console.log(err) });

答案 4 :(得分:0)