2013-03-08 3 views
0

Теперь я хотел бы пройти через библиотеки SDK (как C, так и Java-код), чтобы точно определить, что происходит. До сих пор я установил NDK и получил GDB и работал. Я могу приложить к процессу. Я пробовал bt и strace, но это не дает никакой полезной информации.Отладка библиотек Android SDK

  1. Что мне нужно сделать, чтобы иметь возможность шагнуть в код Java из SDK (и машинный код C, если речь идет о том, что) и идти построчно через код?

  2. Есть ли способ, которым GDB можно использовать для предоставления более полезной информации?

+0

Предполагая, что ваша реализация Java переведена с Java прямо на машинный код ARM, где находится «родной код C»? – Sebivor

+0

libc.so - Вы поднимаете хороший момент, хотя между нативным кодом может быть другой уровень Java. Нужно ли мне загружать источник для этого, или есть предварительно скомпилированные символы отладки где-то в SDK? – Brian

+0

Я думаю, вы в замешательстве. C - не какая-то сборка; Он был разработан по той же причине, что и Java: так, чтобы программисты могли писать переносимый код, который компилирует и ведет себя одинаково в разных системах, а не записывает множество сборочных портов программы. Ваша Java VM скорее всего собирается на ваш диалект машинного кода, а не C. – Sebivor

ответ

0

Я смог частично ответить на мой вопрос, к сожалению, ответ не из легких.

Отладка Java

Для отладки источника Java вы должны захватить исходный код самой Android. Это находится здесь: source.android.com. Есть инструкции по загрузке источника. Инструкции требуют, чтобы вам нужно было выполнить действия на OSX или Linux, хотя возможно использование Cygwin. Как отмечено here, файлы находятся не в одном месте. Я использовал python script, указанный на предыдущей странице, для создания zip-файла источника. Если у вас есть файлы Java в одном месте, все, что вам нужно сделать, это указать Eclipse по отношению к этим файлам, когда вы переходите на скомпилированный Java-код.

Отладка Native

Я все еще работаю на этой части, до сих пор я могу подключить мое приложение с помощью GDB из Cygwin, но до сих пор на самом деле шага в исходные файлы C. Предположительно, библиотеки должны быть построены в режиме отладки.

1

Android - это многопроцессорный интерфейс пользовательского интерфейса с различными сторонами, обменивающимися связующим. Как разработчик sdk, вы должны иметь возможность входить в источники Java на стороне клиента, если при появлении запроса присоединить исходную банку к вашему проекту ADT. Если вы хотите отладить код JNI вашего приложения, вы можете использовать инструменты отладки NDK. Если вы хотите пройти ниже этих уровней или отладить несколько процессов, это становится сложным.

Пожалуйста, проверьте статью Debugging native libs of Android Java apps, чтобы понять, как перейти в собственные библиотеки фреймворков на стороне клиента.

Если вы хотите отладить Java-код system_server (процесс, в котором размещены службы основной инфраструктуры), пожалуйста, проверьте статью Debugging Android Java framework services.

Смежные вопросы