Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android NDK pretty printing

I'm using Android NDK with Eclipse + CDT, running on OSX.

I would like to be able to debug the content of the STD library. I've seen several tutorials about using Python scripts to enable this "pretty printing". The problem is that all of them are using the default gdb, and not the one provided by the Android NDK, so all of them are failing for me.

How can I debug the STD library using Android NDK?

like image 741
user3468999 Avatar asked Jun 23 '14 11:06

user3468999


1 Answers

If you need to just debug, rather than make some already chosen tool work, I can share this code:

dlog.h:

#include <android/log.h>
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG  , "~~~~~~", __VA_ARGS__)
#define DLOG(...) __android_log_print(ANDROID_LOG_DEBUG  , "~~~~~~", __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , "~~~~~~", __VA_ARGS__)
#define ELOG(...) __android_log_print(ANDROID_LOG_ERROR  , "~~~~~~", __VA_ARGS__)

I define both DLOG and LOGD to avoid having to remember the order ))

in Android.mk:

include $(CLEAR_VARS)
LOCAL_MODULE := ...
LOCAL_SRC_FILES += ...
LOCAL_LDLIBS := -llog      # <=========== link with liblog.so
include $(BUILD_SHARED_LIBRARY)

Usage:

DLOG("this is a test %s 0x%x","whoa!",1234);

You see these messages in the same place where you see the Log.d() output, I prefer adb logcat or adb logcat | grep something.

like image 152
18446744073709551615 Avatar answered Oct 31 '22 01:10

18446744073709551615