2012-08-09 12 views
7

Estoy buscando una manera de obtener un seguimiento de la pila cuando estoy en un punto de quiebre determinado. es posible? Idealmente sin tener que bloquear la aplicación y modificar el código. Intenté jugar con el depurador de Android pero no pude encontrar nada muy útil.¿Hay alguna forma de imprimir el seguimiento de pila a pedido?

La razón es que a veces no estoy seguro de cómo llegó la aplicación a un punto en el código, por lo que estoy abierto a otras sugerencias que me ayuden a rastrear las llamadas al método.

Respuesta

12

Esto se puede hacer en Java:

new Throwable().printStackTrace(); 

En Eclipse, si crea una "expresión" con ese código en la vista Expressions de Debug perspectiva, se imprimirá actual traza de la pila (es decir, el StackTrace de el punto de interrupción en el que se detuvo el código) en la vista Console.

+0

Gracias, ¿quiere decir en la vista Expresiones? ¿Qué código debería poner, el que está en la línea con el punto de interrupción? Lo intenté, pero no apareció nada ni en la vista de la consola ni en el LogCat. – JohnEye

+0

En la vista "Expresiones", haga clic en "Agregar nueva expresión" y pegue el código que proporcioné ('new Throwable(). PrintStackTrace();'). Presiona 'Entrar'. Cambia a la vista "Consola" y deberías ver un stacktrace. Esto funciona para mí en vallilla Eclipse Juno, depurando la aplicación Java simple con solo un método 'main (String [])'. – npe

+0

Oh, claro, solo estaba siendo denso :-) Debería haberme ocurrido que quiero dejar que ejecute el código que ha publicado. Muchas gracias, funciona como un encanto. – JohnEye

4
Log.e("AppName", "Debug exception", new Exception()); 
2

La manera más fácil es lanzar una excepción, inmediatamente cogerlo y utilizar printStackTrace().

También puede probar Thread.currentThread().getStackTrace() que le da un StackTraceElement[] en caso de que quiera hacer otra cosa además de tener la representación textual que hace printStackTrace().

+2

No tiene que tirarlo. Ver mi respuesta ;-) – npe

+0

Muy cierto, siempre me olvido de eso: D – f1sh

Cuestiones relacionadas