8

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

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

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

4

3 回答 3

2

创建一个错误对象并检查它是否有堆栈成员。改编自代码泛音

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 的参考文档中。

于 2013-05-02T22:15:58.243 回答
0

Airbrake 提供了一个 JavaScript 库,用于将堆栈跟踪记录到您的 Airbrake 帐户或 Errbit 服务器。

我在 IE 中没有得到堆栈跟踪,其他的可能并不完美,但它看起来确实符合您正在寻找的内容。

于 2012-11-20T19:27:28.763 回答
-1

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

http://stacktracejs.com/

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

于 2013-07-25T11:50:30.993 回答