stack-trace

Get v8 stack traces as an array of CallSite objects.

Install

bash npm install stack-trace

Usage

The stack-trace module makes it easy for you to capture the current stack:

``` javascript var stackTrace = require('stack-trace'); var trace = stackTrace.get();

require('assert').strictEqual(trace[0].getFileName(), __filename); ```

However, sometimes you have already popped the stack you are interested in, and all you have left is an Error object. This module can help:

``` javascript var stackTrace = require('stack-trace'); var err = new Error('something went wrong'); var trace = stackTrace.parse(err);

require('assert').strictEqual(trace[0].getFileName(), __filename); ```

Please note that parsing the Error#stack property is not perfect, only certain properties can be retrieved with it as noted in the API docs below.

Long stack traces

stack-trace works great with long-stack-traces, when parsing an err.stack that has crossed the event loop boundary, a CallSite object returning '----------------------------------------' for getFileName() is created. All other methods of the event loop boundary call site return null.

API

stackTrace.get([belowFn])

Returns an array of CallSite objects, where element 0 is the current call site.

When passing a function on the current stack as the belowFn parameter, the returned array will only include CallSite objects below this function.

stackTrace.parse(err)

Parses the err.stack property of an Error object into an array compatible with those returned by stackTrace.get(). However, only the following methods are implemented on the returned CallSite objects.

Note: Except getFunctionName(), all of the above methods return exactly the same values as you would get from stackTrace.get(). getFunctionName() is sometimes a little different, but still useful.

CallSite

The official v8 CallSite object API can be found here. A quick excerpt:

A CallSite object defines the following methods:

License

stack-trace is licensed under the MIT license.