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.
Browsers that are fully-supported and well-tested:
Browsers that are supported in almost all cases but not as well-tested:
More info about compatibility can be shown with theBrowserShots of the test suite.
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!
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.