Trace de pile d'exceptions Javascript


89

Dans Firefox, je peux obtenir la trace de pile d'une exception en utilisant exception.stack.

Existe-t-il également un moyen d'obtenir cela dans d'autres navigateurs?

Edit: Je veux en fait enregistrer automatiquement la trace de la pile (si possible) et ne pas la déboguer à ce moment-là (c'est-à-dire que je sais comment obtenir la trace de la pile dans un débogueur).

Réponses:


73

Placez cette ligne à l'endroit où vous souhaitez imprimer la trace de la pile:

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

Remarque: testé par moi sur Chrome 24 et Firefox 18

Cela peut également valoir la peine de jeter un coup d'œil à cet outil .


2
Sweet - J'utilise une combinaison de onerror pour obtenir le numéro de ligne, puis j'enroule la ligne incriminée avec un try catch et votre suggestion pour alerter le stacktrace à l'utilisateur. `window.onerror = function (message, url, lineNumber) {alert ('message:' + message + '- url:' + url + '- ln:' + lineNumber); retourne vrai; }; `Ensuite, enveloppez-le pour imprimer le stacktrace. `try {// Du code à l'origine de l'exception. } catch (e) {alert (new Error (). stack); } `
Philip Murphy

meurt en quelque sorte ne me donne que la première ligne de la pile. Qu'est-ce que je fais mal?? ie: function foo () {fdasmkl} try {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7au lieu de"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui

tant pis, a trouvé le problème. Comme c'était déjà une erreur, je peux faire: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }immédiatement
chitzui


2

Si vous voulez la trace de la pile de chaînes, j'irais avec la réponse d' insin : stacktrace.js . Si vous souhaitez accéder aux éléments d'un stacktrace (numéros de ligne, noms de fichiers, etc.), stackinfo , qui utilise en fait stacktrace.js sous le capot.


0

Pas vraiment, du moins pas facilement.

Dans IE, vous pouvez déboguer le processus du navigateur avec MS Script Debugger (qui pour une raison quelconque est un composant Office) ou Visual Studio, puis vous pouvez voir la pile sur les points d'arrêt.


0

Vous devez essayer la bonne bibliothèque open source TraceKit qui tente de créer des traces de pile pour les exceptions JavaScript non dans tous les principaux navigateurs. Vous pouvez en savoir plus sur Tracekit

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

PS : Si vous recherchez un service (utilisant Tracekit) avec une bonne interface utilisateur, vous pouvez essayer Atatus

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.