ネイティブAndroidコードをデバッグするのはかなり難しいので、「printftrace」アプローチを使用します。
だから、私の質問は、ネイティブコードで、Androidアプリケーションを実行しているときに標準「printf( "something")」がどこに表示されるかです。
Logcatにログを記録します。
1)ネイティブコードでロガーを呼び出すには、ヘッダーを含めて_Android_log_write(..)を呼び出します。
#include <Android/log.h>
__Android_log_write(Android_LOG_INFO, "tag here", "message here");
2)Android.mkファイルに次のようなログライブラリを含めます。
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
Logcatにログを記録するために使用できる短いマクロがあります。
_#define LOG_TAG "my_log_tag"
#include <cutils/log.h>
ALOGD("Format this %d", some_int);
_
Android.mkで、「mydroid」をビルドするときにliblog
ライブラリを_LOCAL_SHARED_LIBRARIES
_に追加します(full Androidシステムビルド)。ndkビルドの場合LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
に使える。
_include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := foo.c
# if mydroid
LOCAL_SHARED_LIBRARIES := liblog
# in ndk, use LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog instead
include $(BUILD_EXECUTABLE)
_
ロギングのすべてのレベルに対して定義された他のさまざまなマクロがあります。 _cutils/log.h
_から:
_#define ALOGV(...) ((void)ALOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
#define ALOGD(...) ((void)ALOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
...
#define ALOGE(...) ((void)ALOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))
_