如何生成javascript stacktrace?

时间:2012-11-20 19:23:47

标签: javascript stack-trace printstacktrace

有关如何以跨浏览器的方式在javascript中生成堆栈跟踪的任何建议吗?

较新的浏览器Chrome和Firefox公开了一个允许生成堆栈跟踪的控制台对象。此方法不提供将堆栈跟踪存储到变量的方法。

https://github.com/eriwen/javascript-stacktrace 工作得非常好,但它会生成单独的ajax请求来加载作为跟踪的一部分包含的脚本文件。这似乎是跟踪库中的常用方法。我猜测浏览器没有公开足够的信息来生成有意义的堆栈跟踪(行号,函数名,文件名,参数等)。

3 个答案:

答案 0 :(得分:2)

创建一个Error对象并检查它是否为堆栈成员。改编自Code Overtones

var e = new Error('dummy');
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '('
  .replace(/^\s+at\s+/gm, '') // remove prefix text ' at '
  .split('\n');
console.log(stack);

Error {.stack记录在Mozilla's reference documentation

答案 1 :(得分:0)

Airbrake provides a JavaScript library for logging stacktraces到您的Airbrake帐户或Errbit服务器。

我没有在IE中获得堆栈跟踪,而其他的可能不完美,但它看起来确实与您正在寻找的一致。

答案 2 :(得分:-1)

您可以使用stacktrace.js生成javascript stacktrace

http://stacktracejs.com/

另外,您可以参考:http://www.eriwen.com/javascript/js-stack-trace/