999 votos

¿Cómo puedo obtener la actual traza de la pila?

Puedo obtener la traza de la pila Environment.StackTrace en .Net?

Thread.dumpStack() no es lo que quiero - quiero conseguir el stacktrace de nuevo, no imprimirlo.

1155voto

jjnguy Puntos 62123

Usted puede utilizar Thread.

Que devuelve una matriz de .currentThread().getStackTrace()s que representan la actual traza de la pila de un programa.

264voto

Yishai Puntos 42417
Thread.currentThread().getStackTrace();

está bien si no te importa lo que el primer elemento de la pila.

new Throwable().getStackTrace();

tendrá una posición definida para su método actual, si lo que importa.

181voto

Leif Gruenwoldt Puntos 3583
for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
    System.out.println(ste);
}

62voto

RealHowTo Puntos 13117
Thread.currentThread().getStackTrace();

está disponible desde JDK1.5.

Para una versión anterior, usted puede redirigir exception.printStackTrace() a StringWriter() :

StringWriter sw = new StringWriter();
new Throwable("").printStackTrace(new PrintWriter(sw));
String stackTrace = sw.toString();

40voto

stikkos Puntos 342

Usted puede utilizar apache commons para que:

String fullStackTrace = org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(e);

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X