Удаленно отлаживать каркас системы - PullRequest
1 голос
/ 22 марта 2019

Я бы хотел отладить системную платформу, работающую на устройстве 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.

1 Ответ

0 голосов
/ 22 марта 2019

Если я не ошибаюсь, если у вас есть соответствующая версия Android API в вашем AndroidStudio (установлена ​​через SDK Manager), вы можете установить на устройство вариант отладки вашего приложения, а затем поставить точки останова в коде Android.

Таким образом, вы можете приостановить выполнение кода компонента и посмотреть, что он делает.

...