dor*_*ien 50 c++ debugging logging android android-ndk
我在Android NDK中使用C++设置日志记录.
我可以像这样打印一条消息给logcat:
__android_log_write(ANDROID_LOG_INFO, "tag here", "message here");
Run Code Online (Sandbox Code Playgroud)
现在假设我有一个名为testint的整数.如何打印此int的值?
像这样的东西打印地址,但我想要的价值.我还没有在C++中找到有关如何执行此操作的任何内容.谢谢你的帮助!
__android_log_print(ANDROID_LOG_INFO, "sometag", "%p", *test);
Run Code Online (Sandbox Code Playgroud)
Ada*_*dam 68
这是我见过的最简洁的方式:
#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 );
Run Code Online (Sandbox Code Playgroud)
另外,请确保链接到Android.mk中的日志库:
LOCAL_LDLIBS := -llog
Run Code Online (Sandbox Code Playgroud)
Ben*_*fez 45
您可以使用__android_log_print哪种sprintf语法将数据格式化为字符串.
__android_log_print(ANDROID_LOG_INFO, "sometag", "test int = %d", testInt);
Run Code Online (Sandbox Code Playgroud)
mah*_*mah 13
利用您可用的可变参数打印功能.对于我自己的代码,我提供了一个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);
}
Run Code Online (Sandbox Code Playgroud)
kel*_*nos 11
__android_log_print()采用格式字符串和变量参数列表.您正在寻找打印出有符号整数的格式说明符是"%d".所以这就是你想要的东西:
int foo = 42;
__android_log_print(ANDROID_LOG_INFO, "SomeTag", "foo is %d", foo);
Run Code Online (Sandbox Code Playgroud)
有关格式字符串的更多信息,请参阅sprintf手册.