Любой простой или легкий способ отладки кода Android NDK?
Я ищу способ легко отлаживать код C в приложении Android NDK с помощью Eclipse. Я читал способы отладки приложения с помощью gdb или что-то подобное, но то, что я хочу, - это способ заставить сообщения каким-то образом затмевать.
Я ищу решение, которое так же просто, как использовать функцию печати в C и видеть ее в журнале DDMS или что-то подобное. У кого-нибудь есть опыт?
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".
Edit: кажется, есть проблема с CDT в eclipse juno http://code.google.com/p/android/issues/detail?id=33788 в результате чего отладчик eclipse не может найти точки останова. Обходной путь, который я использовал, - это запустить приложение в режиме отладки (не отлаживать как собственное приложение, а "регулярную" отладку), а затем в командной строке я перешел в свой корень проекта и набрал
ndk-gdb
(Это создаетgdb.setup
file in ). После этого точки останова работали как обычно.в комментариях, связанных с проблемой по ссылке выше, они предлагают некоторые другие обходные пути, но я не пробовал их, так как они, казалось, требовали больше усилий, чем это.