Любой простой или легкий способ отладки кода Android NDK?


Я ищу способ легко отлаживать код C в приложении Android NDK с помощью Eclipse. Я читал способы отладки приложения с помощью gdb или что-то подобное, но то, что я хочу, - это способ заставить сообщения каким-то образом затмевать.

Я ищу решение, которое так же просто, как использовать функцию печати в C и видеть ее в журнале DDMS или что-то подобное. У кого-нибудь есть опыт?

4 58

4 ответа:

Вы можете использовать средства регистрации Android:

#include <android/log.h>

#define APPNAME "MyApp"

__android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "The value of 1 + 1 is %d", 1+1);

убедитесь, что вы также ссылаетесь на библиотеку журналов, в вашем Android.mk файл:

  LOCAL_LDLIBS := -llog

самый простой способ, вероятно, перенаправить инструкции printf () в системный журнал (на основе раздела "просмотр stdout и stderr"официальное справочное руководство АБР.

введите эти 3 команды в командной строке:

adb shell stop
adb shell setprop log.redirect-stdio true
adb shell start

затем вы можете просмотреть выходные данные ваших операторов " printf ()", посмотрев на окно" LogCat " отладчика Eclipse или введя это в командной строке:

adb logcat

просто имейте в виду, что поскольку данные буферизованный перед передачей из эмулятора или устройства, вы обязательно должны очистить буфер stdout, например:

printf("Hello, I am %d years old!\n", 30);
fflush(stdout);

вы должны увидеть сообщение журнала, начинающееся с "I / stdout:"

альтернативное решение (с помощью отладчика) описан здесь:

как я могу эффективно отлаживать код C, который завернут с JNI в Eclipse? (Android Dev)

ADT 20 включает в себя плагин NDK, который обеспечивает поддержку для построения и отладки проектов NDK в Eclipse. документ описывает, как установить и использовать плагин NDK. Инструкции довольно просты и состоят всего из нескольких шагов.

Это самое простое решение, которое я нашел, и это сработало для меня.

Примечание: Если вы используете ADT bundle вам нужно только установить c development tools с установкой нового программного обеспечения (см. скриншот), и вы можете немедленно перейдите в раздел "использование плагина NDK".

c dev tools install

Edit: кажется, есть проблема с CDT в eclipse juno http://code.google.com/p/android/issues/detail?id=33788 в результате чего отладчик eclipse не может найти точки останова. Обходной путь, который я использовал, - это запустить приложение в режиме отладки (не отлаживать как собственное приложение, а "регулярную" отладку), а затем в командной строке я перешел в свой корень проекта и набрал ndk-gdb (Это создает gdb.setup file in ). После этого точки останова работали как обычно.

в комментариях, связанных с проблемой по ссылке выше, они предлагают некоторые другие обходные пути, но я не пробовал их, так как они, казалось, требовали больше усилий, чем это.