【问题标题】:How to generate javascript stacktrace? [closed]如何生成javascript堆栈跟踪? [关闭]
【发布时间】:2012-11-08 22:54:14
【问题描述】:

关于如何以跨浏览器的方式在 javascript 中生成堆栈跟踪的任何建议?

较新的浏览器(Chrome 和 Firefox)公开了一个允许生成堆栈跟踪的控制台对象。此方法不提供将堆栈跟踪存储到变量的方法。

https://github.com/eriwen/javascript-stacktrace 工作得很好,但它会发出单独的 ajax 请求来加载作为跟踪的一部分包含的脚本文件。这似乎是跟踪库中的常用方法。我猜浏览器没有公开足够的信息来生成有意义的堆栈跟踪(行号、函数名、文件名、参数等)。

【问题讨论】:

  • 您是对的,IE9-(让我们面对现实吧,这可能是我们在这里遇到的问题)没有提供太多有用的信息。可以从window.onerror 获取文件和行号,只是有时会触发并且行号有时是错误的。
  • 是的,像往常一样,IE 是问题的孩子。我坚持支持 IE7,因为它的 onerror 事件的行号和函数名信息很糟糕。它仍然有用;我用它来为未捕获的错误写日志。

标签: javascript stack-trace printstacktrace


【解决方案1】:

创建一个错误对象并检查它的堆栈成员。改编自Code Overtones

var e = new Error('dummy');
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '('
  .replace(/^\s+at\s+/gm, '') // remove prefix text ' at '
  .split('\n');
console.log(stack);

Error.stack 记录在Mozilla's reference documentation

【讨论】:

    【解决方案2】:

    Airbrake provides a JavaScript library for logging stacktraces 发送到您的 Airbrake 帐户或 Errbit 服务器。

    我没有在 IE 中获得堆栈跟踪,其他的可能并不完美,但它看起来确实符合您的要求。

    【讨论】:

    • 谢谢。我已经有一个可以登录到我的服务器的框架。它基本上是javascript中的log4j。您提供的链接中的堆栈跟踪生成代码看起来像是从我的问题中的项目中借来的。我正在寻找其他用于堆栈跟踪生成的库。实际使用的日志框架应该是分开的。
    【解决方案3】:

    您可以使用 stacktrace.js 生成 javascript stacktrace

    http://stacktracejs.com/

    另外,您可以参考:http://www.eriwen.com/javascript/js-stack-trace/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2022-08-24
      • 2014-10-07
      相关资源
      最近更新 更多