Ведение журналов значений переменных в Android ndk

Я установил регистрацию с C ++ в Android NDK.

Я могу напечатать сообщение logcat следующим образом:

__android_log_write(ANDROID_LOG_INFO, "tag here", "message here"); 

Теперь предположим, что у меня есть целое число testint . Как я могу напечатать значение этого int?

Что-то вроде этого печатает адрес, но я хочу значение. Я ничего не нашел в C ++ о том, как это сделать. Спасибо за любую помощь!

 __android_log_print(ANDROID_LOG_INFO, "sometag", "%p", *test); 

Вы можете использовать __android_log_print который использует синтаксис sprintf __android_log_print который форматирует ваши данные в строку.

 __android_log_print(ANDROID_LOG_INFO, "sometag", "test int = %d", testInt); 

Вот самый краткий вид, который я видел:

 #include <android/log.h> #define LOG_TAG "someTag" #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) #define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) ... // Now you can log very simply like this: int foo = 42; LOGD( "This is a number from JNI: %d", foo ); 

Кроме того, убедитесь, что вы подключаетесь к библиотеке журналов в Android.mk:

 LOCAL_LDLIBS := -llog 

__android_log_print () принимает строку формата и список переменных аргументов. Спецификатор формата, который вы ищете для печати целого числа со знаком, – «% d». Так что-то вроде того, что вы хотите:

 int foo = 42; __android_log_print(ANDROID_LOG_INFO, "SomeTag", "foo is %d", foo); 

Для получения дополнительной информации о строках формата вы можете увидеть руководство sprintf .

Воспользуйтесь преимуществами функции вариационного логарифмического журнала, доступной вам. Для моего собственного кода я предоставляю функцию LogInfo (), чтобы сделать ее простой. Конечно, здесь есть несколько вариантов.

 void LogInfo(const char *sTag, const char *fmt, ...) { va_list ap; va_start(ap, fmt); __android_log_vprint(ANDROID_LOG_INFO, sTag, fmt, ap); va_end(ap); }