¿Cómo hago en java agregar un stacktrace a mi la depuración de impresión

StackOverflow https://stackoverflow.com/questions/54882

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cuál es la forma más fácil de imprimir un stacktrace de depuración de una impresión?A menudo, durante las pruebas que te gustaría conocer la pila de llamadas que condujeron a la situación provocando un mensaje de depuración.

¿Fue útil?

Otros consejos

Si usted está usando log4j

Exception e = new Exception();
log.error("error here", e);

se imprimirá el stacktrace para su registro.

Si desea guardar la traza de la pila en una Cadena, se puede hacer esto;

String exception = "";
for (StackTraceElement element : e.getStackTrace())
   exception += element.toString() + "\n";

Donde e es, obviamente, una excepción.

Además, suena muy raro para autogenerar una Excepción sólo para encontrar a obtener una traza de la pila para una depuración.Obtener Eclipse y utilizar el modo de depuración, es realmente impresionante.

Sólo la creación de un arbitrario excepción hace el truco para mí:

System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();

Así como lo @jjnguy dijo, si usted no tiene una excepción, también puedes llamar al Hilo.getStackTrace().

Debe ser la captura de la excepción en un bloque try-catch.

e.getStackTrace();

Que devuelve StackTraceElement[] que se puede interpretar.

También:

e.printStackTrace()

se...imprimir el stacktrace.

Simplemente imprimir la actual traza de la pila a stderr, usted puede llamar a:

Thread.dumpStack();

lo que sí llama:

new Exception("Stack trace").printStackTrace();

A la salida de stdout en lugar de stderr, pasar System.out a printStackTrace():

new Exception("Stack trace").printStackTrace(System.out);

Sólo porque me necesitaba a mí mismo:

Como inspirados por la respuesta ¿Cómo puedo encontrar el autor de la llamada de un método que utiliza stacktrace o reflexión? se puede recuperar la pila de llamadas utilizando

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()

Entonces el proceso de impresión y/registro de lo que usted está interesado en.Más trabajo que el uso de Thread.dumpStack(), pero más flexibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top