Rastreamento de pilha de exceção de Javascript


89

No Firefox, posso obter o rastreamento de pilha de uma exceção usando exception.stack.

Existe uma maneira de fazer isso em outros navegadores também?

Edit: Na verdade, eu quero salvar o rastreamento de pilha automaticamente (se possível) e não depurá-lo no momento (ou seja, eu sei como obter o rastreamento de pilha em um depurador).

Respostas:


73

Coloque esta linha onde deseja imprimir o rastreamento de pilha:

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

Nota: testado por mim no Chrome 24 e Firefox 18

Também pode valer a pena dar uma olhada nesta ferramenta .


2
Legal - eu uso uma combinação de onerror para obter o número da linha e, em seguida, envolvo a linha ofensiva com um try catch e sua sugestão para alertar o stacktrace de volta ao usuário. `window.onerror = function (message, url, lineNumber) {alert ('message:' + message + '- url:' + url + '- ln:' + lineNumber); return true; }; `Em seguida, embrulhe-o para imprimir o rastreamento de pilha. `try {// Algum código que está causando a exceção. } catch (e) {alert (new Error (). stack); } `
Philip Murphy

de alguma forma, morre apenas me dá a primeira linha da pilha. O que estou fazendo de errado?? ou seja: função foo () {fdasmkl} try {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> em Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7vez de"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

deixa pra lá, encontrei o problema. Como já era um erro, posso fazer: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }imediatamente
chitzui


2

Se você deseja que o rastreamento de pilha corda, eu iria com a resposta de insin: stacktrace.js . Se você deseja acessar as partes de um stacktrace (números de linha, nomes de arquivo, etc) stackinfo , que na verdade usa stacktrace.js sob o capô.


0

Na verdade não, pelo menos não facilmente.

No IE, você pode depurar o processo do navegador com o MS Script Debugger (que por algum motivo é um componente do Office) ou Visual Studio, e então você pode ver a pilha nos pontos de interrupção.


0

Você deve experimentar uma boa biblioteca de código aberto TraceKit, que tenta criar rastreamentos de pilha para exceções JavaScript não tratadas em todos os principais navegadores. Você pode ler mais sobre o Tracekit

https://github.com/csnover/TraceKit/

PS : Se você está procurando um serviço (usando Tracekit) com boa IU, você pode tentar Atatus

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.