Я бы хотел отладить системную платформу, работающую на устройстве Android.
В частности, GpsLocationProvider
иногда останавливается на некоторое время, и я хотел бы знать, что он делает. Я обнаружил, что класс содержит android.os.Handler
, который получает сообщения, размещенные на нем, для связи между потоками. Иногда между отправкой сообщения проходит несколько минут, и вызывается Handler.handleMessage
. Я понимаю, что поток, принадлежащий Handler
Looper
, занят.
Я хотел бы присоединить отладчик, приостановить этот поток и посмотреть, что в данный момент выполняется. Кроме того, как-то получить трассировку этого потока. Есть ли способ сделать это?
Я пытался создать проект Android Studio из дерева исходных текстов с помощью development/tools/idegen/idegen.sh
, но я не уверен, что делать дальше. В случае, если это имеет значение, (устаревшее) устройство работает под управлением Android 6.
Я также только что открыл debuggerd
. Я вызываю logcat -s GpsLocationProvider
, чтобы найти соответствующий PID, и передаю его debuggerd
, как с аргументом -b
, так и без него. Тем не менее, это только дает обратную трассировку в нативный код. Я не вижу там никакого кода Java.