`
netcome
  • 浏览: 482108 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Javascript Stacktrace update

阅读更多

I started a Javascript Stacktrace project back in August 2008. The idea was to give additional debugging power to browsers where you don’t have good tools to work with. I’d like to give you an update on where the project is today.

Lately, I’ve been working on updating my old script. Since it was written, we’ve seen lots of major browser releases and the introduction of the V8 Javascript engine used byGoogle Chrome.

Updated browser compatibility

Browsers that are fully-supported and well-tested:

  1. Firefox (and Iceweasel) 0.9+
  2. UPDATE: Chrome 1+ now perfectly supported
  3. Safari 3+
  4. IE 5.5+
  5. Opera 9+
  6. Konqueror 3.5+
  7. K-Meleon 1.5.3+
  8. Epiphany 2.28.0+

Browsers that are supported in almost all cases but not as well-tested:

  1. Chrome 1+ – One bug (feature?) that may be in Chrome reporting functions as anonymous when they aren’t. HOWEVER, Chrome’s stack gives us line numbers AND column numbers, so we can see exactly where our problem is – even in minified Javascript! Sweet!Chrome 1+ now fully supported.
  2. Opera 7-8 – Opera is dead to me now. Opera 10+ has removed the error.stack info we needed and introduced error.stacktrace, but it seems very unstable. Argh.

More info about compatibility can be shown with theBrowserShots of the test suite.

Now socially coded

I’m not going to post the code here because the source and tests are now on the javascript-stacktrace project on GitHub. You can download it here.

Follow it, file bugs, and make comments there. If you have improvements to make, please fork the project and then contact me or do a “push request”. I’ll make sure you get credit ;)

UPDATE: Øyvind Sean Kinsey has added memoization (caching the implementation) for the mode and XHR bits as well as the ability to pass an existing Javascript Error and get a stacktrace. We’re working on tests and you should see project updates soon. Thanks, Øyvind!

 

var lastError;
try {
    // error producing code
} catch(e) {
   lastError = e;
   // do something else with error
}

// later...
printStackTrace({e: lastError}); //Returns stacktrace from lastError!

 

Try it out!

The code is in use on my blog. Click here to give it a spin.

 

function foo() {
    var blah;
    bar("blah");
}
 
function bar(blah) {
    var stuff;
    thing();
}
 
function thing() {
    if (true) { //your error condition here
        var st = printStackTrace();
        alert(st.join("\n\n"));
    }
}
 
foo();

 

Random note: one cool suggestion I saw was to assign printStackTrace to window.onerror. Pretty brilliant if you ask me.

I want to thank the guys who contributed to the script:Luke Smith, Loic Dachary and Johan Euphrosine.

I could use a bit of help getting the Chrome and Opera bugs worked out. I’m sure some of you guys who remember how to write software can help. Suggestions and whinings are welcome as long as they don’t get out of hand in the comments.

Javascript Stacktrace on GitHub

分享到:
评论

相关推荐

    asp.net(c#)的异常处理,StackTrace说明,获得错误位置

    利用 Exception 的StackTrace 属性获得错误的文件的位置(文件名,行号),并将错误信息保存在一个.config的文件里,内容有: 如何获取错误 如何获取错误的位置,多层开发时,在类用应用此法方便查错 如保获取站点的...

    前端项目-stacktrace.js.zip

    stacktrace.js是一个专门用于获取JavaScript堆栈跟踪的开源库,它的核心价值在于其框架不可知性。这意味着无论你使用的是Angular、React、Vue还是其他任何前端框架,stacktrace.js都能够无缝地与之集成,提供一致的...

    matlab开发-用StackTrace替换键盘

    "用StackTrace替换键盘"是一种优化的调试策略,它允许开发者在不中断程序执行的情况下,获取代码运行时的堆栈跟踪信息,从而更好地理解程序执行路径。 首先,我们需要了解什么是堆栈跟踪(StackTrace)。堆栈跟踪是...

    stacktrace.js:在所有Web浏览器中生成,解析和增强JavaScript堆栈跟踪

    stacktrace.js 在所有浏览器中生成,解析和增强JavaScript堆栈跟踪 使用导致错误(或您指定的任何条件)的函数调用来调试和配置JavaScript。 stacktrace.js使用浏览器的Error.stack机制生成堆栈跟踪,对其进行...

    Atom-stacktrace,用于导航stacktraces的atom包。通过在github上创建一个帐户为smashwilson/stacktrace开发做出贡献。.zip

    Atom-stacktrace是一款专门为Atom文本编辑器设计的插件,它主要功能是帮助用户更有效地浏览和导航程序中的堆栈跟踪(stacktraces)。这个插件由开发者smashwilson在GitHub上维护,允许社区成员通过贡献来持续改进其...

    Android studio 出现错误Run with --stacktrace option to get the stack trace. Run with --info or --debu

    主要介绍了 Android studio 出现错误Run with --stacktrace option to get the stack trace. Run with --info or --debu的相关资料,需要的朋友可以参考下

    前端开源库-atma-loader-stacktrace

    "atma-loader-stacktrace"是一个专为前端开发者设计的开源库,其核心功能是处理和增强JavaScript运行时的堆栈跟踪信息。这个库的主要目标是为编译和缩小后的脚本提供清晰、有用的堆栈跟踪,帮助开发者更好地诊断和...

    JCL_Debug_StackTrace_Demo

    标题“JCL_Debug_StackTrace_Demo”表明这是一个关于使用JCL进行调试和显示堆栈跟踪的示例项目。堆栈跟踪是在程序运行时记录函数调用序列的一种技术,它可以帮助开发者迅速定位错误发生的具体位置。在Delphi7中,JCL...

    cpp-stacktrace:快速简单的C ++堆栈跟踪

    在C++编程中,堆栈跟踪(stack trace)是一个非常重要的工具,它允许开发者查看程序运行时调用函数的顺序,这对于调试和问题排查极为有用。`cpp-stacktrace`项目提供了一种快速且简单的方式来实现C++的堆栈跟踪功能...

    开源项目-palantir-stacktrace.zip

    "palantir-stacktrace.zip" 是一个开源项目,包含了Palantir团队开发的StackTrace库。这个库专门设计用来管理和解析Java应用程序中的堆栈跟踪信息,这对于故障排查、性能优化以及日志分析至关重要。 在Java编程中,...

    Python库 | git-stacktrace-0.8.0.tar.gz

    `git-stacktrace`是一个针对Git的Python库,其版本为0.8.0,封装了处理Git日志和堆栈跟踪的实用功能。这个库特别适用于那些需要在Git版本控制系统中分析错误和异常情况的开发者。 在Git的日常使用中,开发者常常...

    git-stacktrace:轻松找出哪个git commit导致了给定的stacktrace

    在开发过程中,我们经常遇到因某个特定提交导致的错误或堆栈跟踪(stacktrace)。为了方便地定位问题,`git-stacktrace` 工具应运而生。这个工具是基于 Python 实现的,利用 GitPython 库,它能够帮助开发者快速识别...

    dotnet 警惕使用 StackTrace 加获取方法标记 Attribute 特性在 Release 下被内联.rar

    标题中的“dotnet 警惕使用 StackTrace 加获取方法标记 Attribute 特性在 Release 下被内联”提示我们关注的是.NET(dotnet)开发中关于StackTrace类的一个问题,特别是如何在Release模式下正确处理方法的Attribute...

    mybatis-springMapper太多导致StackOverflow_StackTrace

    详细请参见文章 : https://blog.csdn.net/u011039332/article/details/83045246

    axios-better-stacktrace:Axios插件,可为axios错误提供更好的堆栈跟踪

    安装NPM npm install axios-better-stacktrace 纱yarn add axios-better-stacktrace笔记已使用axios 0.21.0进行了测试。用法// CommonJS// const axiosBetterStacktrace = require('axios-better-stacktrace')....

    从StackTrace获取调用程序集

    标题“从StackTrace获取调用程序集”揭示了这个主题,它主要关注如何利用C#编程语言和.NET框架中的反射(Reflection)功能来实现这一目标。本文将深入探讨这一技术,以及它在实际开发中的应用。 首先,让我们理解...

    stacktrace:用于存储和打印回溯的C ++库

    "stacktrace"库提供了一个方便的方式来捕获、存储和打印程序执行时的堆栈跟踪,这对于理解和解决运行时错误非常有帮助。这个库特别适用于那些需要深入理解程序流程或需要在异常发生时收集上下文信息的场合。 堆栈...

    improved-android-remote-stacktrace:改进的Android远程Stacktrace库

    Android远程Stacktrace:改进 该项目是,它添加了许多重要功能: 可定制的接口,用于处理堆栈跟踪 通过将堆栈跟踪保存到自己的目录而不是应用程序的根文档目录,从而更好地处理文件系统 允许可选的调试日志记录,这...

    stacktrace-bookmarklet:Stacktrace.js的书签

    《stacktrace-bookmarklet:Stacktrace.js的书签》是一个基于JavaScript的实用工具,它允许开发者在浏览器中快速获取和分析JavaScript的堆栈跟踪信息。这个工具的核心是Stacktrace.js库,它是一个强大的JavaScript库...

Global site tag (gtag.js) - Google Analytics