在預設情況下,adb logcat只能顯示應用程式的除錯資訊,我把logcat.cpp修改了一下,讓它同時可以列印核心除錯資訊:
修改的檔案:system/core/logcat/logcat.cpp
1、首先先加入標頭檔案
#include //add by jay
2、定義所使用的tag
#define kernel_tag "kernel"
3、替換readloglines函式
static
void
readloglines(log_device_t*devices) ;
//addby jay zhang
intresult;
fd_setreadset;
for(dev=devices;dev;dev=dev->next)
}while
(1);
//ifweoversleepit'sok,i.e.ignoreeintr.
fd_zero(&readset);
for(dev=devices;dev;dev=dev->next)
result=select(max+1,&readset,null,null,sleep?null:&timeout);
}while
(result==-1&&errno==eintr);
if(result>=0)
if(errno==eagain)
perror(
"logcatread"
);exit(exit_failure);
}else
if(!ret)
entry->entry.msg[entry->entry.len]=
'\0'
;dev->enqueue(entry);
++queued_lines;
#if1//readkernellog
if((ret=klogctl(9,buffer,
sizeof
(buffer)))>0)else*/
printnextentry(dev);}}
#endif}}
if(result==0)
if(g_tail_lines==0||queued_lines<=g_tail_lines)
else
--queued_lines;
}//thecallerrequestedtojustdumpthelogandexit
if(g_nonblock)
}else
if(g_tail_lines==0)
else
--queued_lines;}}
}next:;}
}這裡沒有把核心除錯資訊的級別轉換成androind的log級別,entry->entry.msg[0] =android_log_info;使用了android_log_info級別,程序id用了當前的程序id。
然後就可以使用logcat來抓取kernel的log了!
若只列印核心訊息,使用:adb logcat -s kernel:i
讓adb logcat列印核心除錯資訊
在預設情況下,adb logcat只能顯示使用程式的除錯資訊,我把logcat.cpp修改了一下,讓它同時可以列印核心除錯資訊 system core logcat logcat.cpp static void readloglines int logfd while 1 else if ret n...
linux核心列印級別
1.printk 是乙個核心的乙個記錄日誌的機制,經常用來記錄資訊或者警告。printk可以指定輸出日誌的優先順序,在include linux kern levels.h中有相應的巨集定義 1 define kern soh 001 ascii start of header 2 define k...
SK BUFF 核心列印除錯
為了更方便的除錯報文,需要對sk buff的真正資料載荷進行除錯輸出,只需要在驅動中加入如下 就可以除錯了 static void qdmalib dump skb struct sk buff skb,struct net device dev netdev printk kern info,de...