Skip to content
This repository

Framework-agnostic, micro-library for getting stack traces in all web browsers

branch: master

Welcome to stacktrace.js! Code Climate

A JavaScript tool that allows you to debug your JavaScript by giving you a stack trace of function calls leading to an error (or any condition you specify)

How do I use stacktrace.js?

Just include stacktrace.js file on your page, and call it like so:

<script type="text/javascript" src=""></script>
<script type="text/javascript">
    // your code...
    var trace = printStackTrace();
    alert(trace.join('\n\n')); // Output however you want!
    // more code of yours...

You can also pass in your own Error to get a stacktrace not available in IE or Safari 5-

<script type="text/javascript" src=""></script>
<script type="text/javascript">
    try {
        // error producing code
    } catch(e) {
        var trace = printStackTrace({e: e});
        alert('Error!\n' + 'Message: ' + e.message + '\nStack trace:\n' + trace.join('\n'));
        // do something else with error

Note that error message is not included in stack trace.

Bookmarklet available on the project home page.

Function Instrumentation

You can now have any (public or privileged) function give you a stacktrace when it is called:

function logStackTrace(stack) {
var p = new printStackTrace.implementation();
p.instrumentFunction(this, 'baz', logStackTrace);

function foo() {
    var a = 1;
function bar() {
foo(); //Will log a stacktrace when 'baz()' is called containing 'foo()'!

p.deinstrumentFunction(this, 'baz'); //Remove function instrumentation

What browsers does stacktrace.js support?

It is currently tested and working on:

  • Firefox (and Iceweasel) 0.9+
  • Google Chrome 1+
  • Safari 3.0+ (including iOS 1+)
  • Opera 7+
  • IE 5.5+
  • Konqueror 3.5+
  • Flock 1.0+
  • SeaMonkey 1.0+
  • K-Meleon 1.5.3+
  • Epiphany 2.28.0+
  • Iceape 1.1+

Contributions Stories in Ready

This project is made possible due to the efforts of these fine people:

Something went wrong with that request. Please try again.