ver - java debugger online
¿Cómo en Java agrego una stacktrace a mi impresión de depuración? (8)
¿Cuál es la forma más fácil de imprimir un stacktrace desde una impresión de depuración? A menudo, durante la prueba, le gustaría saber la pila de llamadas que conduce a la situación que provoca un mensaje de depuración.
Además de lo que dijo @jjnguy, si no tienes una excepción, también puedes llamar a Thread.getStackTrace ().
Debería atrapar la excepción en un bloque try-catch.
e.getStackTrace();
Eso devuelve StackTraceElement [] que luego puede interpretar.
También:
e.printStackTrace()
va a ... imprimir la stacktrace.
Solo crear una excepción arbitraria me funciona:
System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();
Si desea guardar el seguimiento de la pila en una Cadena, puede hacerlo;
String exception = "";
for (StackTraceElement element : e.getStackTrace())
exception += element.toString() + "/n";
Donde e es, obviamente, una excepción.
Además, suena muy extraño generar automáticamente una Excepción propia para encontrar obtener un seguimiento de pila para una depuración. Obtenga Eclipse y use su modo de depuración, es realmente increíble.
Si estás usando log4j
Exception e = new Exception();
log.error("error here", e);
imprimirá stacktrace en su registro.
Para imprimir simplemente el trazo de la pila actual a stderr, puede llamar a:
Thread.dumpStack();
que a su vez solo llama:
new Exception("Stack trace").printStackTrace();
Para enviar a stdout en lugar de stderr, pase System.out
a printStackTrace()
:
new Exception("Stack trace").printStackTrace(System.out);
Solo porque lo necesitaba yo mismo:
Según lo inspirado por la respuesta ¿Cómo encuentro al llamante de un método que usa stacktrace o reflection? , puedes recuperar la pila de llamadas usando
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
Luego procesa e imprime / registra lo que le interesa. Más trabajo que usar Thread.dumpStack()
, pero más flexible.