如何在NDK中打印/记录变量的地址

时间:2011-08-11 18:10:05

标签: android c logging android-ndk

我在C方面不是很强,但我现在正在使用NDK,我需要帮助以十六进制记录变量的地址。我一直在使用__android_log_print打印通用日志消息,但是如何告诉C将变量的地址转换为char数组?

2 个答案:

答案 0 :(得分:7)

我从未使用过Android NDK,但我假设__android_log_print适用于printf格式字符。在这种情况下,您可以使用%p

假设我们有一个变量int a = 10;。打印其地址:

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

修改

接受的答案:

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

答案 1 :(得分:2)

我多次使用Android NDK并且在使用本机logcat之前尝试过。

__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;

并且在c源文件中包含标题

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

比makefile看起来像

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

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

include $(BUILD_SHARED_LIBRARY)