前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发之,LogCat无故不打印隐藏深坑

Android开发之,LogCat无故不打印隐藏深坑

作者头像
Xiaolei123
发布2021-03-19 12:07:23
1.3K0
发布2021-03-19 12:07:23
举报
文章被收录于专栏:肖蕾的博客肖蕾的博客

最近在项目中遇见一个问题,在日志打印的过程中,发现某些日志不打印出来,这里给大家看看

image

看到这里是不是感觉很奇怪,在同一个地方,为什么有些日志打印,有些日志不打印?
后来我做了个实验,一个一个字尝试过去,结果如下:

image

看到这里其实基本已经结案,就是发现 IMS开头的日志都不会显示
为什么不会显示呢?我们来看一段Logger系统的源码。
代码语言:javascript
复制
int __android_log_buf_write(int bufID, int prio, const char *tag, const char *msg)
{
    struct iovec vec[3];
    char tmp_tag[32];

    if (! tag) tag = "";

    if ((bufID != LOG_ID_RADIO) &&
        (!strcmp(tag, "HTC_RIL") ||
        (!strncmp(tag, "RIL", 3)) ||
        (!strncmp(tag, "IMS", 3)) ||
        !strcmp(tag, "AT") ||
        !strcmp(tag, "GSM") ||
        !strcmp(tag, "STK") ||
        !strcmp(tag, "CDMA") ||
        !strcmp(tag, "PHONE") ||
        !strcmp(tag, "SMS"))) {
            bufID = LOG_ID_RADIO;
            snprintf(tmp_tag, sizeof(tmp_tag), "use-Rlog/RLOG-%s", tag);
            tag  = tmp_tag; 
    }
看到这里其实大家已经明白了,其实是当匹配到这些字符串的时候,会呗一个tmp_tag的替代了,而tmp_tag只是进行了申请内存,内容全是空的。所以导致logCat打印不出来。

End. 其实解决方案很简单,在TAG中,要尽量避免这些字符串。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最近在项目中遇见一个问题,在日志打印的过程中,发现某些日志不打印出来,这里给大家看看
    • 看到这里是不是感觉很奇怪,在同一个地方,为什么有些日志打印,有些日志不打印?
      • 后来我做了个实验,一个一个字尝试过去,结果如下:
        • 看到这里其实基本已经结案,就是发现 IMS开头的日志都不会显示
          • 为什么不会显示呢?我们来看一段Logger系统的源码。
            • 看到这里其实大家已经明白了,其实是当匹配到这些字符串的时候,会呗一个tmp_tag的替代了,而tmp_tag只是进行了申请内存,内容全是空的。所以导致logCat打印不出来。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档