2011-08-11 19 views
5

No soy muy fuerte en C, pero estoy trabajando con el NDK en este momento y necesito ayuda para registrar la dirección de una variable en hexadecimal. He estado usando __android_log_print para imprimir mensajes de registro genéricos, pero ¿cómo le digo a C que convierta la dirección de una variable en una matriz de caracteres?Cómo imprimir/registrar la dirección de una variable en NDK

Respuesta

7

Nunca trabajé con Android NDK, pero supongo que __android_log_print funciona con caracteres de formato printf. En ese caso, puede usar %p.

Digamos que tenemos una variable int a = 10;. Para imprimir su dirección:

printf("%p\n", &a); //This will print in hexadecimal 

EDITAR:

respuesta aceptada:

__android_log_print(SOME_PRIO, "sometag", "%p", &a); 
+0

Sí, pero '__android_log_print' no tiene formato, como' printf' hace, por lo que necesita convertir realmente una dirección a cadena antes de pasarla a esta función. – Phonon

+0

Bien, eché un vistazo rápido a la documentación y pensé que se podía hacer algo como '' __android_log_print (SOME_PRIO, "sometag", "% p", &a); '', perdón entonces. – Fred

+0

No tengo idea de cómo me lo perdí. Thanks =) – Phonon

2

trabajo con Android NDK muchas veces y he tratado antes de su uso Logcat nativa.

__android_log_print(6, "deneme", "text"); -> this is error message 
typedef enum android_LogPriority { 
ANDROID_LOG_UNKNOWN = 0, 
ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ 
ANDROID_LOG_VERBOSE, 
ANDROID_LOG_DEBUG, 
ANDROID_LOG_INFO, 
ANDROID_LOG_WARN, 
ANDROID_LOG_ERROR, 
ANDROID_LOG_FATAL, 
ANDROID_LOG_SILENT,  /* only for SetMinPriority(); must be last */ 
} android_LogPriority; 

y de incluir un encabezado en los archivos de origen c

#include <jni.h> 
#include <android/log.h> 

de makefile parecerse

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := deneme-jni 
LOCAL_SRC_FILES := deneme.c 
LOCAL_LDLIBS := -llog 

include $(BUILD_SHARED_LIBRARY) 
Cuestiones relacionadas