Android開(kāi)發(fā)之,LogCat無(wú)故不打印隱藏深坑

最近在項(xiàng)目中遇見(jiàn)一個(gè)問(wèn)題,在日志打印的過(guò)程中,發(fā)現(xiàn)某些日志不打印出來(lái),這里給大家看看

image

看到這里是不是感覺(jué)很奇怪,在同一個(gè)地方,為什么有些日志打印,有些日志不打???

后來(lái)我做了個(gè)實(shí)驗(yàn),一個(gè)一個(gè)字嘗試過(guò)去,結(jié)果如下:

image

看到這里其實(shí)基本已經(jīng)結(jié)案,就是發(fā)現(xiàn) IMS開(kāi)頭的日志都不會(huì)顯示

為什么不會(huì)顯示呢?我們來(lái)看一段Logger系統(tǒng)的源碼。

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

看到這里其實(shí)大家已經(jīng)明白了,其實(shí)是當(dāng)匹配到這些字符串的時(shí)候,會(huì)唄一個(gè)tmp_tag的替代了,而tmp_tag只是進(jìn)行了申請(qǐng)內(nèi)存,內(nèi)容全是空的。所以導(dǎo)致logCat打印不出來(lái)。

End. 其實(shí)解決方案很簡(jiǎn)單,在TAG中,要盡量避免這些字符串。

559259945 加群交流

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容