【问题标题】:Javascript exception stack traceJavascript 异常堆栈跟踪
【发布时间】:2010-09-13 22:57:32
【问题描述】:

在 Firefox 中,我可以使用 exception.stack 获取异常的堆栈跟踪。

有没有办法在其他浏览器中也能做到这一点?

编辑:我实际上想自动保存堆栈跟踪(如果可能的话)而不是当时调试它(即我知道如何在调试器中获取堆栈跟踪)。

【问题讨论】:

    标签: javascript exception


    【解决方案1】:

    您必须尝试优秀的开源库TraceKit,它会尝试为所有主流浏览器中未处理的 JavaScript 异常创建堆栈跟踪。您可以阅读有关 Tracekit 的更多信息

    https://github.com/csnover/TraceKit/

    PS:如果您正在寻找具有良好 UI 的服务(使用 Tracekit),您可以尝试Atatus

    [披露]我在 Atatus 工作。

    【讨论】:

    • 当链接到您自己的网站或内容(或您附属的内容)时,您must disclose your affiliation in the answer 以免被视为垃圾邮件。根据 Stack Exchange 政策,在您的用户名中包含与 URL 相同的文本或在您的个人资料中提及它不被视为充分披露。
    【解决方案2】:

    如果你想要字符串堆栈跟踪,我会选择 insin 的答案:stacktrace.js。如果您想访问堆栈跟踪的各个部分(行号、文件名等)stackinfo,它实际上在后台使用了 stacktrace.js。

    【讨论】:

      【解决方案3】:

      将此行放在要打印堆栈跟踪的位置:

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

      注意:由我在 Chrome 24Firefox 18

      上测试

      this tool 也值得一看。

      【讨论】:

      • Sweet - 我使用 onerror 的组合来获取行号,然后用 try catch 和您的建议将有问题的行包装起来,以提醒用户堆栈跟踪。 ` window.onerror = function(message, url, lineNumber) { alert('message: ' + message +' - url: ' + url +' - ln: ' + lineNumber);返回真; }; ` 然后包装它以打印出堆栈跟踪。 ` try { // 一些导致异常的代码。 } catch(e) { alert(new Error().stack); } `
      • 不知何故死了只给了我堆栈的第一行。我究竟做错了什么??即:函数 foo() { fdasmkl } try { foo() } catch(e) { err = new Error(e).stack; console.log(err) } =>>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7 而不是 "Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
      • 没关系,找到问题了。由于这已经是一个错误,我可以立即执行:function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }
      【解决方案4】:

      Webkit 现在具有提供堆栈跟踪的功能:

      Web Inspector: Understanding Stack Traces,由 Yury Semikhatsky 于 2011 年 4 月 20 日星期三上午 7:32 发布 (webkit.org)

      来自那个帖子:

      【讨论】:

      【解决方案5】:

      不是真的,至少不容易。

      在 IE 中,您可以使用 MS Script Debugger(由于某种原因是 Office 组件)或 Visual Studio 调试浏览器进程,然后您可以在断点处查看堆栈。

      【讨论】:

        猜你喜欢
        • 2011-01-05
        • 2017-08-06
        • 1970-01-01
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多