console.trace()
exibe seu resultado no console.
Quero obter os resultados como string e salvá-los em um arquivo.
Não defino nomes para funções e também não consigo obter seus nomes com callee.caller.name
.
98
console.trace()
exibe seu resultado no console.
Quero obter os resultados como string e salvá-los em um arquivo.
Não defino nomes para funções e também não consigo obter seus nomes com callee.caller.name
.
Respostas:
Não tenho certeza sobre o firefox, mas na v8 / chrome você pode usar um método no construtor de erro chamado
captureStackTrace
. ( Mais informações aqui )Portanto, uma maneira rápida de conseguir isso seria:
Normalmente,
getStackTrace
estaria na pilha quando fosse capturado. O segundo argumento excluigetStackTrace
de ser incluído no rastreamento de pilha.fonte
Error().stack
. Embora os nomes de objeto e função sejam perdidos no firefox e o nome do objeto seja perdido no cromo (o mesmo queError.captureStackTrace
),Error().stack
funciona em ambos os navegadores e me dá informações suficientes para depurar.Error.stack é o que você precisa. Funciona no Chrome e Firefox. Por exemplo
dará no Chrome:
e no Firefox:
fonte
(new Error).stack
Isso fornecerá um rastreamento de pilha (como uma matriz de strings) para o Chrome moderno, Firefox, Opera e IE10 +
Uso:
Ele exclui da pilha sua própria chamada, bem como o título "Erro" que é usado pelo Chrome e Firefox (mas não pelo IE).
Não deve travar em navegadores mais antigos, mas apenas retornar um array vazio. Se você precisar de uma solução mais universal, olhe stacktrace.js . A sua lista de navegadores suportados é realmente impressionante, mas a meu ver é muito grande para aquela pequena tarefa a que se destina: 37Kb de texto reduzido incluindo todas as dependências.
fonte
Há uma biblioteca chamada stacktrace.js que fornece rastreamentos de pilha entre navegadores. Você pode usá-lo simplesmente incluindo o script e chamando a qualquer momento:
fonte
Este é apenas um pequeno aprimoramento ao excelente código de Konstantin. Ele reduz um pouco as despesas de arremesso e captura e apenas instancia a pilha de erros:
Normalmente, quero um nível específico de rastreamento de pilha (para meu logger personalizado), então isso também é possível ao chamar:
fonte
você só precisa
var stack = new Error().stack
. esta é uma versão simplificada da resposta @sgouros.Provavelmente não funcionará em todos os navegadores (funciona no Chrome).
fonte