我正在调查我的Android应用程序中的死锁问题(不是ANR)。当我的应用程序检测到潜在的死锁时,它会使用Thread.getAllStackTraces()打印出所有活动线程的堆栈跟踪。但是这个堆栈跟踪信息不包括等待和阻塞信息。我想以编程方式获得堆栈跟踪与等待和阻塞的信息,如下所示。有没有办法做到这一点?
"main" prio=5 tid=1 WAIT
| group="main" sCount=1 dsCount=0 obj=0x418ccea0 self=0x417c7388
| sysTid=13183 nice=-11 sched=0/0 cgrp=apps handle=1074684244
| state=S schedstat=( 0 0 0 ) utm=7 stm=5 core=3
at java.lang.Object.wait(Native Method)
- waiting on <0x42aeb7a8> (a com.myapp.SomeModule)
at java.lang.Object.wait(Object.java:364)
at com.myapp.SomeModule.doSomething(SomeModule.java:45)
发布于 2019-08-20 23:58:09
有一种方法可以在应用程序崩溃或线程因意外异常而终止时获得堆栈跟踪。
您可以添加UncaughtExceptionHandler
Thread.setDefaultUncaughtExceptionHandler { thread, exception ->
// check here for thread info and exception thrown
}
点击此处查看更多信息:https://www.bugsnag.com/blog/error-handling-on-android-part-2
与此相关的安卓文档:https://developer.android.com/reference/java/lang/Thread.UncaughtExceptionHandler
https://stackoverflow.com/questions/57421278
复制相似问题