Traccia dello stack di eccezioni Javascript


89

In Firefox posso ottenere la traccia dello stack di un'eccezione utilizzando exception.stack.

C'è un modo per ottenerlo anche in altri browser?

Modifica: in realtà voglio salvare la traccia dello stack automaticamente (se possibile) e non eseguirne il debug al momento (cioè so come ottenere la traccia dello stack in un debugger).

Risposte:


73

Posiziona questa riga nel punto in cui desideri stampare la traccia dello stack:

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

Nota: testato da me su Chrome 24 e Firefox 18

Potrebbe valere la pena dare un'occhiata anche a questo strumento .


2
Dolce: uso una combinazione di onerror per ottenere il numero di riga e poi avvolgere la riga incriminata con un tentativo di cattura e il tuo suggerimento per avvisare lo stacktrace di nuovo all'utente. `window.onerror = function (message, url, lineNumber) {alert ('message:' + message + '- url:' + url + '- ln:' + lineNumber); restituire vero; }; `Quindi avvolgilo per stampare lo stacktrace. `try {// Un codice che causa l'eccezione. } catch (e) {alert (new Error (). stack); } "
Philip Murphy

in qualche modo muore mi dà solo la prima riga della pila. Che cosa sto facendo di sbagliato?? cioè: funzione foo () {fdasmkl} try {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7invece di"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

non importa, ha trovato il problema. Dato che era già un errore, posso fare: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }immediatamente
chitzui


2

Se vuoi la traccia dello stack di stringhe, andrei con la risposta di insin : stacktrace.js . Se vuoi accedere ai pezzi di uno stacktrace (numeri di riga, nomi di file, ecc.) , Stackinfo , che in realtà utilizza stacktrace.js sotto il cofano.


0

Non proprio, almeno non facilmente.

In IE, puoi eseguire il debug del processo del browser con MS Script Debugger (che per qualche motivo è un componente di Office) o Visual Studio, quindi puoi vedere lo stack sui punti di interruzione.


0

Devi provare una buona libreria open source TraceKit che tenta di creare tracce dello stack per le eccezioni JavaScript non gestite in tutti i principali browser. Puoi leggere di più su Tracekit

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

PS : se stai cercando un servizio (usando Tracekit) con una buona interfaccia utente, puoi provare Atatus

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.