【问题标题】:Can I call `Log.*` within my C code? I want to debug using LogCat我可以在我的 C 代码中调用“Log.*”吗?我想使用 LogCat 进行调试
【发布时间】:2012-08-06 18:29:04
【问题描述】:

我卡住了,在我的 C 代码中的某个地方出现错误,我不知道在哪里。我想使用简单的Log.i( tag, msg )Log.e( tag, msg ) 命令。我在网上环顾四周,发现了另外两个关于 SO 的问题,但它们都没有完全解决我所说的问题。

This method is not what I'm looking for...

And this is exactly what I'm looking for, but in C++, not C

如果 C++/C 中的语法相同,我很抱歉,但我对两者都没有什么经验。

【问题讨论】:

  • 您在链接的第二个问题中尝试过选项#2 吗?似乎是迄今为止最简单的选择。 adb shell setprop log.redirect-stdio true

标签: android android-ndk java-native-interface logcat


【解决方案1】:

C中的语法是一样的

#include <android/log.h>

#define TAG "MYDEBUG"

#ifdef DEBUG
#  define  D(x...)  __android_log_print(ANDROID_LOG_INFO, TAG , x)
#else
#  define  D(x...) do {} while (0)
#endif

#  define  W(x...)  __android_log_print(ANDROID_LOG_WARN, TAG , x)
#  define  E(x...)  __android_log_print(ANDROID_LOG_ERROR, TAG , x)

【讨论】:

    【解决方案2】:
    #include <cutils/log.h>
    #define LOG_TAG "MYDEBUG"
    
    ...
    ALOGD("Here we are!");
    

    在旧版本中,宏是:

    LOGD("Here we are!");
    

    【讨论】:

    • 这个日志文件在哪里?我也想知道 ALOGD、ALOGE 和 ALOGI 之间的区别......
    • @ChefPharaoh ./system/core/include/cutils/log.h
    • 我的意思是这个日志文件被保存或存储在哪里。但我发现我可以使用带有各种参数的 logcat 来查看我想要的日志。虽然仍然很高兴知道这些日志文件的位置。
    • @ChefPharaoh 日志不存储在文件系统上的文件中。 Android 文档说“来自各种应用程序和系统部分的日志被收集在一系列循环缓冲区中”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2011-04-22
    • 2021-06-26
    • 2014-05-10
    • 2019-08-25
    • 2011-01-19
    • 1970-01-01
    相关资源
    最近更新 更多