14

如何在 Javascript 中获得回溯?

理想特点:

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

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

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

谢谢。

编辑 -

感谢您的建议。

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

我可以做这个:

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

这让我得到了字符串形式的信息,这对于一目了然是可以的,但是对 walk 会有很大的帮助e.stack。它有标准格式吗?

再次感谢。

4

3 回答 3

32

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

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

正如下面的评论所建议的,读者应该更喜欢:console.log(new Error().stack);

于 2015-06-10T03:22:19.220 回答
5

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

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

于 2020-03-07T14:23:42.173 回答
1

这个 lib: stacktrace-js可以在任何地方工作,不仅有错误。

例子:

StackTrace.get()
    .then(stack => { console.log(stack) })
    .catch(err => { console.log(err) });
于 2018-01-10T12:35:40.967 回答