ネイティブのアンドロイドコードをデバッグするのはかなり難しいので、私は "printf trace"アプローチに行きます。C/C++ printfs - Androidのネイティブコードはどこにありますか?
私の質問は、ネイティブコードでは、Androidアプリケーションを実行しているときに標準の "printf(" something ")が表示されていますか?
ネイティブのアンドロイドコードをデバッグするのはかなり難しいので、私は "printf trace"アプローチに行きます。C/C++ printfs - Androidのネイティブコードはどこにありますか?
私の質問は、ネイティブコードでは、Androidアプリケーションを実行しているときに標準の "printf(" something ")が表示されていますか?
ログを記録する。
1)ネイティブコードでロガーを起動するには、ヘッダーを含めて_android_log_write(..)を呼び出します。
#include <android/log.h>
__android_log_write(ANDROID_LOG_INFO, "tag here", "message here");
2)あなたのAndroid.mkファイルには、このようなログlibが含まれています。
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
logcatにログインするためのマクロがあります。 Android.mkで
#define LOG_TAG "my_log_tag"
#include <cutils/log.h>
ALOGD("Format this %d, some_int);
'mydroid'(フルAndroidシステム構築)に構築するとき、LOCAL_SHARED_LIBRARIES
にliblog
ライブラリを追加します。 ndkビルドの場合LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
を使用できます。
すべてのレベルのログに対して定義されたさまざまなマクロがあります。 cutils/log.h
から:[?GDBでのprintfの行を参照する方法]
#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__))
の可能複製(http://stackoverflow.com/questions/5459324/how-to-see-printf-lines-in-gdb) – richq
可能性のある[std :: cout]がAndroid-ndkで使用可能です(https://stackoverflow.com/questions/8870174/is-stdcout-usable-in-android-ndk) –