我想调试在Android设备上运行的系统框架。
特别是,GpsLocationProvider
有时会停止一段时间,我想知道它在做什么。我发现这个类包含一个android.os.Handler
,它会发送消息发送给它,以便在线程之间进行通信。有时需要几分钟才能发送消息,并调用Handler.handleMessage
。我解释说属于Handler
的Looper
的线程很忙。
我想附加一个调试器,暂停该线程,看看当前正在执行什么。或者,以某种方式得到该线程的追溯。有没有办法做到这一点?
我尝试使用development/tools/idegen/idegen.sh
从源代码树创建一个Android Studio项目,但我不确定如何从那里开始。如果重要,(传统)设备运行Android 6。
我也刚刚发现了debuggerd
。我打电话给logcat -s GpsLocationProvider
找到相应的PID,并将其提供给debuggerd
,无论是否有-b
参数。但是,这只是对本机代码的回溯。我没有看到任何Java代码。
如果我没弄错的话,如果您的AndroidStudio中有相应的Android API版本(通过SDK Manager安装),您可以在设备上安装应用程序的调试版本,然后将断点放在Android的代码中。
这样,您可以暂停组件代码的执行并查看它正在执行的操作。