Registro de valores de variables en ndk nativo de Android

Configuré el registro con C ++ en Android NDK.

Puedo imprimir un mensaje para logcat así:

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

Ahora digamos que tengo un entero llamado testint . ¿Cómo puedo imprimir el valor de este int?

Algo como esto imprime la dirección, pero quiero el valor. No he encontrado nada en C ++ en cómo hacer esto. ¡Gracias por cualquier ayuda!

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

Puede utilizar __android_log_print que utiliza una sintaxis similar a sprintf que formatea sus datos en una cadena.

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

Aquí está la forma más concisa que he visto:

 #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 ); 

Además, asegúrate de enlazar con la biblioteca de registros de tu Android.mk:

 LOCAL_LDLIBS := -llog 

__android_log_print () toma una cadena de formato y una lista de argumentos variables. El especificador de formato que está buscando para imprimir un entero con signo es "% d". Así que algo como esto es lo que quieres:

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

Para obtener más información sobre las cadenas de formato, puede ver el manual sprintf .

Aproveche la función de impresión de registro variadic que tiene disponible. Para mi propio código, proveo una función de LogInfo () para hacerlo simple. Por supuesto hay varias opciones disponibles para usted aquí.

 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); } 
  • Android desactivar "SignalStrength", etc para iniciar sesión LogCat
  • Logging mejores prácticas y pensamientos
  • contraseña de Android o número de teléfono para iniciar sesión
  • Cómo depurar cordova plugin y Registro con "android.util.log"
  • ¿Cómo registrar el cuerpo de solicitud y respuesta con Retrofit-Android?
  • Android: cómo almacenar los valores de las variables en el registro?
  • Debo eliminar e.printStackTrace () de mi código antes de publicar
  • Android, ¿Log reduce la velocidad de la aplicación?
  • Cómo deshabilitar los registros de las API externas en Android
  • Lectura de archivos registrados a través de slf4android?
  • Phonegap Media API - Grabar y reproducir audio - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.