I'm looking for a way to easily debug C code in an Android NDK application using Eclipse. I've read ways to debug the app using gdb or something similar but what I want is a way to push messages to Eclipse somehow.
I'm looking for a solution that's as simple as using a print function in C and seeing it in the DDMS Log or anything similar. Does anyone have any experience doing this?
You can use the Android logging facilities:
#include <android/log.h> #define APPNAME "MyApp" __android_log_print(ANDROID_LOG_VERBOSE, APPNAME, "The value of 1 + 1 is %d", 1+1);
Make sure you also link against the logging library, in your Android.mk file:
LOCAL_LDLIBS := -llog
The easiest way is probably to redirect printf() statements to the system log (based on the "Viewing stdout and stderr" section of the official ADB reference manual.
Type these 3 commands on a command line:
adb shell stop adb shell setprop log.redirect-stdio true adb shell start
Then you can view the output of your "printf()" statements by looking at the "LogCat" window of Eclipse Debugger, or by typing this on a command line:
Just be aware that since the data is buffered before transferring from the emulator or device, you should definitely flush the stdout buffer, eg:
printf("Hello, I am %d years old!\n", 30); fflush(stdout);
You should then see a log message starting with "I/stdout:"