JavaScript 回溯

发布于 2024-11-25 18:12:59 字数 504 浏览 1 评论 0原文

如何在 Javascript 中获取回溯?

理想的功能:

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

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

如果没有,可以用常见的网络浏览器方言来完成吗?

谢谢。

编辑--

感谢您的建议。

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

我可以这样做:

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

它以字符串形式获取信息,这对于一目了然来说是可以的,但是对于遍历 e.stack 会有很大的帮助。它有标准形式吗?

再次感谢。

How to I get a backtrace in Javascript?

Ideal features:

  • entry function name, or some meaningful identifier for anonymous functions,
  • argument list at each level,
  • line numbers.

Can this be done in standard ECMAScript?

If not, can it be done in the common web browser dialects?

Thanks.

Edit --

Thanks for your suggestions.

My dialect doesnot support arguments.caller or arguments.callee.

I can do this:

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

Which gets me the information as a string, which is okay for at-a-glance, but it would be a great help to walk e.stack. Does it have a standard form?

Thanks again.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮世清欢 2024-12-02 18:12:59

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

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

正如下面的评论所建议的,读者应该更喜欢:

console.log(new Error().stack);

In my debugging experience, I always use this

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

As the comments below suggested, the readers should prefer:

console.log(new Error().stack);
破晓 2024-12-02 18:12:59

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

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

Another way is to use
console.trace();

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

不美如何 2024-12-02 18:12:59

这个库:stacktrace-js可以在任何地方工作,而不仅仅是出现错误。

例子:

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

This lib: stacktrace-js works anywhere, not only with errors.

Example:

StackTrace.get()
    .then(stack => { console.log(stack) })
    .catch(err => { console.log(err) });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文