Seguimiento de la pila de excepciones de Javascript

89

En Firefox puedo obtener el seguimiento de la pila de una excepción usando exception.stack.

¿Hay alguna forma de conseguirlo también en otros navegadores?

Editar: en realidad, quiero guardar el seguimiento de la pila automáticamente (si es posible) y no depurarlo en ese momento (es decir, sé cómo obtener el seguimiento de la pila en un depurador).

ujh
fuente

Respuestas:

73

Coloque esta línea donde desea imprimir el seguimiento de la pila:

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

Nota: probado por mí en Chrome 24 y Firefox 18

También puede valer la pena echarle un vistazo a esta herramienta .

Francesco Casula
fuente
2
Dulce: uso una combinación de onerror para obtener el número de línea y luego envolver la línea ofensiva con un try catch y su sugerencia para alertar al stacktrace al usuario. `window.onerror = function (message, url, lineNumber) {alert ('mensaje:' + mensaje + '- url:' + url + '- ln:' + lineNumber); devuelve verdadero; }; Luego envuélvalo para imprimir el seguimiento de la pila. `try {// Algún código que está causando la excepción. } captura (e) {alerta (nuevo Error (). pila); } `
Philip Murphy
de alguna manera muere solo me da la primera línea de la pila. ¿¿Qué estoy haciendo mal?? es decir: función foo () {fdasmkl} try {foo ()} catch (e) {err = new Error (e) .stack; console.log (err)} = >>> en Error: ReferenceError: fdasmkl is not defined at <anonymous>:6:7lugar de"Error: ReferenceError: fdasmkl is not defined at eval (eval at <anonymous> (:6:1), <anonymous>:1:1) at <anonymous>:6:1"
chitzui
no importa, encontré el problema. Como ya fue un error, puedo hacer: function foo() { fdasmkl } try { foo() } catch(e) { console.log(e.stack) }inmediatamente
chitzui
23

Webkit ahora tiene una funcionalidad que proporciona seguimientos de pila:

Web Inspector: Understanding Stack Traces , publicado por Yury Semikhatsky el miércoles 20 de abril de 2011 a las 7:32 am (webkit.org)

De esa publicación:

Brian M. Hunt
fuente
1
Mucho más conveniente que crear una excepción solo para ver su pila.
Alex Churchill
El enlace está roto, pero creo que hay una copia aquí pjh0718.blogspot.com/2016/02/…
Stephen Turner
2

Si desea el seguimiento de la pila de cadenas, iría con la respuesta de insin : stacktrace.js . Si desea acceder a las partes de un stacktrace (números de línea, nombres de archivos, etc.) stackinfo , que en realidad usa stacktrace.js debajo del capó.

BT
fuente
0

No realmente, al menos no fácilmente.

En IE, puede depurar el proceso del navegador con MS Script Debugger (que por alguna razón es un componente de Office) o Visual Studio, y luego puede ver la pila en los puntos de interrupción.

levik
fuente
0

Debe probar la buena biblioteca de código abierto TraceKit que intenta crear seguimientos de pila para excepciones de JavaScript no controladas en todos los navegadores principales. Puede leer más sobre Tracekit

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

PD : si está buscando un servicio (usando Tracekit) con una buena interfaz de usuario, puede probar Atatus

Fizer Khan
fuente