Java / Android - Comment imprimer un full stack trace?
Dans Android (Java) comment puis-je imprimer une pile complète de trace? Si mon application se bloque à partir de nullPointerException ou quelque chose, il imprime un (presque) complet de la trace de la pile comme suit:
java.io.IOException: Attempted read from closed stream.
com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream.
at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545)
at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488)
at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417)
at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313)
at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243)
at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33)
at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164)
Caused by: java.io.IOException: Attempted read from closed stream.
at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159)
at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:64)
at android.net.http.AndroidHttpClient.getUngzippedContent(AndroidHttpClient.java:218)
at com.android.music.sync.api.MusicApiClientImpl.createAndExecuteMethod(MusicApiClientImpl.java:312)
at com.android.music.sync.api.MusicApiClientImpl.getItems(MusicApiClientImpl.java:588)
at com.android.music.sync.api.MusicApiClientImpl.getTracks(MusicApiClientImpl.java:638)
at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:512)
... 6 more
Cependant, parfois, à des fins de débogage, je veux connecter un full stack trace de l'endroit où je suis dans le code. J'ai pensé que je pouvais tout simplement faire ceci:
StackTraceElement trace = new Exception().getStackTrace();
Log.d("myapp", trace.toString());
Mais cela affiche le pointeur vers l'objet... Dois-je parcourir toutes la trace de la pile d'éléments à imprimer? Ou est-il une méthode simple pour imprimer tout?
- Vous pouvez utiliser cette méthode Thread.currentThread().getStackTrace() stackoverflow.com/questions/1069066/...
- Double Possible de Android - complet en caractères d'exception backtrace pour vous connecter
Vous devez vous connecter pour publier un commentaire.
Il y a des remplacements de tous les journal des méthodes avec
(String tag, String msg, Throwable tr)
signatures.Passant une exception comme le troisième paramètre doit vous donner la pleine stacktrace dans le logcat.
getStackTraceString()
méthode mentionné par @Thomas derrière les coulisses.Suivants devraient faire l'affaire:
Noter que
...x more
à la fin ne coupez pas toutes les informations de la trace de la pile:...ou en d'autres termes, remplacer
x more
avec la dernièrex
lignes de la première exception.getStackTraceString()
à partir de? N'apparaît pas dans Eclipse? Il ne fait pas partie deThrowable
ouException
....import android.util.Log;
).Utilisation Du Journal.getStackTraceString(Throwable t). Vous pouvez obtenir plus de traces de pile par creuser plus profond. Par exemple:
Récupérées à partir http://developer.android.com/reference/android/util/Log.html#getStackTraceString%28java.lang.Throwable%29
Log.getStackTraceString()
n'est pas la trace de la pile juste la retourne comme une Chaîne de caractères. Le code ci-dessus ne log rien et ne pourra pas non plus avec un NPE sie.getCause()
estnull
.Vous pouvez utiliser ceci:
Vous pouvez également imprimer une trace de la pile à tout moment dans votre code d'application, à l'aide de méthodes telles que
Thread.dumpStack()
S'il vous plaît aller à travers le lien pour plus de détails
Vous avez besoin d'utiliser Throwable Objet pour obtenir le plein stackTrace.
Ref: https://stackoverflow.com/a/18546861