Javascript异常堆栈跟踪

Javascript异常堆栈跟踪,javascript,exception,Javascript,Exception,在Firefox中,我可以使用exception.stack获取异常的堆栈跟踪 在其他浏览器中也有这样的方法吗 编辑:我实际上希望自动保存堆栈跟踪(如果可能的话),而不是在调试时进行调试(即,我知道如何在调试器中获取堆栈跟踪)。不是真的,至少不容易 在IE中,您可以使用MS Script Debugger(出于某种原因是Office组件)或Visual Studio调试浏览器进程,然后可以在断点上查看堆栈。Webkit现在具有提供堆栈跟踪的功能: ,由Yury Semikhatsky于2011年

在Firefox中,我可以使用
exception.stack
获取异常的堆栈跟踪

在其他浏览器中也有这样的方法吗


编辑:我实际上希望自动保存堆栈跟踪(如果可能的话),而不是在调试时进行调试(即,我知道如何在调试器中获取堆栈跟踪)。

不是真的,至少不容易


在IE中,您可以使用MS Script Debugger(出于某种原因是Office组件)或Visual Studio调试浏览器进程,然后可以在断点上查看堆栈。

Webkit现在具有提供堆栈跟踪的功能:

,由Yury Semikhatsky于2011年4月20日星期三上午7:32发布(webkit.org)

从该职位:


将此行放在要打印堆栈跟踪的位置:

console.log(new Error().stack);
注意:由我在Chrome 24和Firefox 18上测试


可能也值得一看。

如果您想要字符串堆栈跟踪,我会选择insin的答案:。如果您想访问stacktrace的各个部分(行号、文件名等),它实际上在后台使用stacktrace.js。

您必须尝试好的开源库,该库尝试为所有主要浏览器中未处理的JavaScript异常创建堆栈跟踪。您可以阅读更多关于Tracekit的信息


PS:如果您正在寻找具有良好UI的服务(使用Tracekit),您可以尝试

比仅创建异常以查看其堆栈方便得多。链接已断开,但是我认为这里有一个副本,Sweet-我使用onerror的组合来获取行号,然后用try-catch和您的建议将有问题的行包装起来,以提醒stacktrace返回给用户window.onerror=函数(消息、url、行号){alert('message:'+message+'-url:'+url+'-ln:'+lineNumber);返回true;};`然后将其包装以打印出stacktrace请尝试{//一些导致异常的代码。}catch(e){alert(new Error().stack);}`不知何故死机只会给我堆栈的第一行。我做错了什么??i、 例如:函数foo(){fdasmkl}try{foo()}catch(e){err=newerror(e).stack;console.log(err)}=>>>
Error:ReferenceError:fdasmkl未在:6:7定义,而不是
“Error:ReferenceError:fdasmkl未在eval(eval at:6:1),:1:6:1定义”
。由于这已经是一个错误,我可以立即执行:
function foo(){fdasmkl}try{foo()}catch(e){console.log(e.stack)}