2017-02-21 37 views
2

Я использовал Visual Studio, и механизм отладки действительно мне очень полезен. Со многими файлами заголовков и C в 1 проекте, просто простой F10, он мог бы совершить экскурсию с начала функции main(), чтобы я мог видеть последовательность выполняемого кода.Как отлаживать проект Android Studio (используя NDK и JNI) по очереди, чтобы увидеть рабочий процесс?

Теперь я перехожу в Android Studio и начинаю с проекта с использованием NDK, JNI (этот проект, например: https://github.com/googlesamples/android-ndk/tree/master/gles3jni), он меня смущает, потому что есть много файлов .java и других файлов C++ (native code) и я не знаю, какой код, из которого выполняется файл, и как он продолжается.

Мой вопрос: я ищу способ отладки в Android Studio по очереди от начала , чтобы увидеть его рабочий процесс понравился, как Visual Studio сделал, но все, что я получил от поиска, - это то, как начать с точки останова при отладке.

Я попытался поставить точку останова в onCreate() методе пусковой деятельности и использовать F8 для Step OverF7 и к Step Into, но он не работает, как я ожидал. Он ведет меня к суперклассу Activity.java и GLSurafaceView.java вместо того, чтобы взять меня на код C++. Есть ли способ сделать это в Android Studio и как это сделать?

Я пробовал с другими проектами, но проблема все еще остается прежней. Надеюсь, кто-то может помочь.

+0

Как вы построили свою родную библиотеку? Небольшой фрагмент будет полезен. – Moved

+0

@Moved, все уже создано в проекте выше. Все, что мне нужно сделать, это установить CMake, NDK и LLBD с помощью диспетчера SDK. После того, как все они будут установлены, проект готов к запуску. Более подробную информацию можно найти здесь: https://developer.android.com/ndk/guides/index.html –

ответ

1

Этого не произойдет. Ваше приложение (код шаблона Java) настроено на ответ на многие системные события, которые происходят, когда пользователь работает с приложением и устройством, на котором установлено приложение. Если ваш код на C++ является частью монолитного простого алгоритма, вы можете установить точку останова s в начале и действительно следовать шаг за шагом. Но с Android Studio даже этот процесс не так прост, как с Vusial Studio. Начнем с того, что всегда удаленная отладка, в зависимости от тонких протоколов связи.

Здесь вы можете попытаться настроить Microsoft Visual Studio в качестве среды IDE для отладки собственного кода Android. Это удивительно прочный, а также может быть более вам знакомым.

+0

большое спасибо за ваш ответ. Однако мой проект, над которым я работаю, довольно сложный. Он содержит среднее количество java-кода и кучу кода на C++ (например, 40 файлов .cpp и .h), вызываемых через JNI, можно ли отлаживать такой проект с помощью Visual Studio? Кстати, есть ли другой способ увидеть рабочий процесс с помощью Android Studio?Или единственный способ прочитать код по строкам с самого начала? –

+0

Я не думаю, что 40 файлов окажут значительное давление на Visual Studio. Вызовы через JNI представляют собой более серьезную проблему: они по существу нарушают поток выполнения C++, и не очень легко переключить контекст отладки между Java и C++. Я бы рекомендовал больше полагаться на автономные тесты, которые могут выполняться в «обычном» отладчике, и меньше на отладку беспорядка a.k.a. Android APK. –

+0

Как это часто бывает с кросс-компиляторами и удаленной отладкой, вы можете сделать вашу жизнь проще, если вы можете создавать значительные тесты, которые можно отлаживать в VS на Windows, и только когда ваше ядро ​​полностью надежное, перейдите на Android и только приходится беспокоиться о коде клея и системном зависании. –

1

Поскольку вы спросили об Android Studio, я отвечу об этом - я не знаком с Visual Studio для Android и, возможно, это лучше для того, что вы просите.

В студии Android такая отладка очень тяжелая - хотя некоторые люди сказали, что им удалось заставить ее работать, я не смог. Особенно в сложной среде. Итак, что я делаю, это обширное ведение журнала, с максимально возможной детализацией и визуальной отладкой - наведите текстовый вид на экран и обновите его необходимой информацией. В некоторых случаях это может быть довольно сильным. Или, альтернативно, внесите некоторые изменения в ваш ui или вашу сцену в результате определенных условий, которые вы определяете, чтобы вы могли видеть визуальный эффект. Опять же, гораздо менее полезно, чем отладка, но все еще может быть достаточно мощной.

+0

Спасибо за ваш ответ, очень полезные советы. Кстати, могу ли я спросить, где компилятор запускается с момента запуска приложения? Мне было бы легче следовать, если бы я знал, с чего это начинается с самого начала. –

+0

Не совсем понятно, о чем вы спрашиваете - хотите ли вы узнать первый пункт, где вы можете поместить свой журнал? Ява? C++? – yakobom

+0

Я хочу прочитать код с самого начала, чтобы узнать, как это сделать. Поэтому я имею в виду, где компилятор сразу запускает его. Например, в C++ он всегда начинается с функции '' main() ''. –

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

  • Нет связанных вопросов^_^