android java 打印堆栈_Java/Android – 如何打印出完整的堆栈跟踪?

本文介绍在Android应用中如何打印完整的堆栈跟踪。当遇到如NullPointerException等异常时,系统会自动打印部分堆栈跟踪。为在代码中记录完整堆栈跟踪,可以使用`new Exception().getStackTrace()`获取栈元素,并通过遍历和打印每个元素来实现。虽然直接打印`trace.toString()`只会显示对象指针,但手动遍历并打印每个`StackTraceElement`将提供所需详细信息。
摘要由CSDN通过智能技术生成

在Android(Java)如何打印出一个完整的堆栈跟踪?如果我的应用程序崩溃从nullPointerException或某事,它打印出一个(几乎)完整的堆栈跟踪,如:

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.(GZIPInputStream.java:81)

at java.util.zip.GZIPInputStream.(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

然而有时,为了调试的目的,我想记录一个完整的堆栈跟踪从我在代码中。我想我可以这样做:

StackTraceElement trace = new Exception().getStackTrace();

Log.d("myapp", trace.toString());

但是这只是打印出指向对象的指针…我必须遍历所有的堆栈跟踪元素打印出来吗?还是有一个简单的方法来打印它?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值