JavaScript异常堆栈跟踪


89

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

有没有办法在其他浏览器中得到它?

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

Answers:


73

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

console.log(new Error().stack);

注意:由我测试 Chrome 24Firefox 18

也许值得一看这个工具


2
亲爱的-我结合使用onerror来获取行号,然后使用try catch和您的建议将有问题的行包装起来,以提醒stacktrace返回给用户。`window.onerror = function(message,url,lineNumber){alert('message:'+ message +'-url:'+ url +'-ln:'+ lineNumber); 返回true;}; `然后包装它以打印出堆栈跟踪。`try {//一些导致异常的代码。} catch(e){alert(new Error()。stack); }`
菲利普·墨菲

不知何故的死亡只给了我堆栈的第一行。我究竟做错了什么??例如:function foo(){fdasmkl} try {foo()} catch(e){err = new Error(e).stack; console.log(err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7代替"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

没关系,发现了问题。由于已经是一个错误,我可以做:function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }立即
chitzui


2

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


0

并非如此,至少不容易。

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.