日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 互聯(lián)網(wǎng) > Linux內(nèi)核調(diào)試printk()總結(jié)

Linux內(nèi)核調(diào)試printk()總結(jié)

來源:程序員人生   發(fā)布時(shí)間:2014-11-13 09:02:39 閱讀次數(shù):3260次
我們?cè)谑褂胮rintk()函數(shù)中使用日志級(jí)別為的是使編程人員在編程進(jìn)程中自定義地進(jìn)行信息的輸出,更加容易地掌握系統(tǒng)當(dāng)前的狀態(tài)。
對(duì)程序的調(diào)試起到了很重要的作用。
(下文中的日志級(jí)別和控制臺(tái)日志控制級(jí)別是1個(gè)意思)


printk(日志級(jí)別 "消息文本");這里的日志級(jí)別通俗的說指的是對(duì)文本信息的1種輸出范圍上的指定。
日志級(jí)別1共有8個(gè)級(jí)別,printk的日志級(jí)別定義以下(在linux26/includelinux/kernel.h中):
#defineKERN_EMERG"<0>"/*緊急事件消息,系統(tǒng)崩潰之條件示,表示系統(tǒng)不可用*/
#defineKERN_ALERT"<1>"/*報(bào)告消息,表示必須立即采取措施*/
#defineKERN_CRIT"<2>"/*臨界條件,通常觸及嚴(yán)重的硬件或軟件操作失敗*/
#defineKERN_ERR"<3>"/*毛病條件,驅(qū)動(dòng)程序經(jīng)常使用KERN_ERR來報(bào)告硬件的毛病*/
#defineKERN_WARNING"<4>"/*正告條件,對(duì)可能出現(xiàn)問題的情況進(jìn)行正告*/
#defineKERN_NOTICE"<5>"/*正常但又重要的條件,用于提示。經(jīng)常使用于與安全相干的消息*/
#defineKERN_INFO"<6>"/*提示信息,如驅(qū)動(dòng)程序啟動(dòng)時(shí),打印硬件信息*/
#defineKERN_DEBUG"<7>"/*調(diào)試級(jí)別的消息*/


沒有指定日志級(jí)別的printk語句默許采取的級(jí)別是 DEFAULT_ MESSAGE_LOGLEVEL(這個(gè)默許級(jí)別1般為<4>,即與KERN_WARNING在1個(gè)級(jí)別上),其定義在linux26/kernel/printk.c中可以找到。
下面是1個(gè)比較簡(jiǎn)單的使用
printk(KERN_INFO "INFO ");  //這里可使用數(shù)字代替 KERN_INFO,便可以寫成printk(<6> "INFO ");  
在這個(gè)格式的定義中,日志級(jí)別和信息文本之間不能夠使用逗號(hào)隔開,由于系統(tǒng)在進(jìn)行編譯的時(shí)候,將日志級(jí)別轉(zhuǎn)換成字符串于后面的文本信息進(jìn)行連接。


在對(duì)系統(tǒng)輸出進(jìn)行控制時(shí),主要是討論控制臺(tái)和偽終真?zhèn)€輸情況,和系統(tǒng)日志等。


下面是控制臺(tái)日志級(jí)別的1些扼要的介紹
控制臺(tái)相應(yīng)的日志級(jí)別定義以下:
#define MINIMUM_CONSOLE_LOGLEVEL  1   /*可使用的最小日志級(jí)別*/
#define DEFAULT_CONSOLE_LOGLEVEL  7 /*比KERN_DEBUG 更重要的消息都被打印*/


int console_printk[4] = {
DEFAULT_CONSOLE_LOGLEVEL,/*控制臺(tái)日志級(jí)別,優(yōu)先級(jí)高于該值的消息將在控制臺(tái)顯示*/
/*默許消息日志級(jí)別,printk沒定義優(yōu)先級(jí)時(shí),打印這個(gè)優(yōu)先級(jí)以上的消息*/
DEFAULT_MESSAGE_LOGLEVEL,
/*最小控制臺(tái)日志級(jí)別,控制臺(tái)日志級(jí)別可被設(shè)置的最小值(最高優(yōu)先級(jí))*/
MINIMUM_CONSOLE_LOGLEVEL,
DEFAULT_CONSOLE_LOGLEVEL,/* 默許的控制臺(tái)日志級(jí)別*/
};
在進(jìn)行查看的時(shí)候,可使用命令 cat /proc/sys/kernel/printk來查看這4個(gè)值
可以通過修改文件/proc/sys/kernel/printk中的第1個(gè)值來更改當(dāng)前的控制臺(tái)日志級(jí)別。


(聲明:在下面的模塊函數(shù)中控制臺(tái)所使用的日志級(jí)別均為KERN_WARNING級(jí)別)當(dāng)日志級(jí)別高于console_loglevel(控制臺(tái)日志級(jí)別)時(shí),消息才能在控制臺(tái)顯示出來。
假設(shè)我們寫了1個(gè)以下的模塊函數(shù):
1 #include <linux/init.h>
2 #include <linux/module.h>
3 MODULE_LICENSE("Dual BSD/GPL");
4 static int book_init(void)
5 {
6   printk(KERN_EMERG "EMERG ");
7   printk(KERN_ALERT "ALERT ");
8   printk(KERN_CRIT " CRIT ");
9   printk(KERN_ERR " ERR ");
10  printk(KERN_WARNING ""WARNING ");
11   printk(KERN_NOTICE "NOTICE ");
12  printk(KERN_INFO "INFO ");
13  printk(KERN_DEBUG "DEBUG ");
14  return 0;
    }
15static void book_exit(void)
16{
17  printk(KERN_ALERT "Book module exit ");
    }
18  module_init(book_init);
19  module_exit(book_exit);


在控制臺(tái)(這里指的是虛擬終端  Ctrl+Alt+(F1~F6))加載模塊以后,控制臺(tái)給出的信息為
6~9行中要求輸出的信息,我們?cè)趥谓K端(如果對(duì)偽終端不是很清楚可以看相干的內(nèi)容)上運(yùn)行命令tail -n 10 /var/log/messages查看日志文件剛才得到的運(yùn)行記錄
可以發(fā)現(xiàn)messages中的值為KERN_WARNING級(jí)別以后所要求輸出到信息值。而如果我們?cè)谖募yslog和kern-log中查看系統(tǒng)日志文件,1般情況下可以得到所有的輸出信息


Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637057] INFO
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637063] CRIT
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637066] WARNING
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637068] ERR
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637069] ALERT
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637070] EMERG
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637071]  NOTICE 
Jul 18 11:44:19 xiyoulinux-desktop kernel: [16100.637072] DEBUG
(不過在有些機(jī)器上運(yùn)行得到的結(jié)果其實(shí)不是這樣的)
即1般情況下,syslog和kern.log兩個(gè)文件中記錄的內(nèi)容從編程這個(gè)角度來看是基本1致的。
在目錄/var/log/下有1下4個(gè)文件可以查看日志
syslog ,kern.log,messages ,DEBUG 。   
syslog和kern.log1般情況下可以得到所有的系統(tǒng)輸出值,而messages得到的是比控制臺(tái)日志級(jí)別低的輸出值,DEBUG得到的僅僅是DEBUG級(jí)別的
輸出值。
1般情況下,優(yōu)先級(jí)高于控制臺(tái)日志級(jí)別的消息將被打印到控制臺(tái)。優(yōu)先級(jí)低于控制臺(tái)日志級(jí)別的消息將被打印到messages日志文件中,而在偽終端下不打印任何的信息。
我們?cè)谶M(jìn)行有關(guān)編程的時(shí)候,若使用到printk()這個(gè)函數(shù),1般查看信息是在messages和虛擬終端下進(jìn)行查看,而對(duì)syslog和kern.log下是用來檢驗(yàn)所有信息的輸出情況。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日韩欧美自拍偷拍 | 国产亚洲精品久久久优势 | 国产精品久久久久久福利一牛影视 | 91短视频黄 | 一区二区三区在线免费观看 | 日韩精品免费看 | 99精品在线| 久久成人a| 午夜伦情电午夜伦情电影如如视频 | 国产真实乱偷精品视频免 | 国产综合视频在线观看 | 99久久精品免费看国产免费软件 | 日韩中文在线观看 | 精品一区在线 | 99久久精品国产免费看不卡 | 麻豆av一区 | 在线观看av网站 | 黄色毛片免费观看 | 玖玖在线视频 | 国产一区二区视频在线观看免费 | 亚洲国产精品久久 | 91精品国产色综合久久 | 国产精品一区二区在线播放 | 成人免费网站在线观看 | 亚洲综合一区二区三区 | 日韩av电影免费看 | 日韩欧美亚洲国产精品字幕久久久 | 91精品福利 | 人人九九 | 大陆性猛交xxxx乱大交 | 国产 日韩 欧美 在线 | 日韩久久久久久久久久久久 | 一本久久a精品一合区久久久 | 成人精品网站在线观看 | 免费一区二区三区 | 国产视频久久久 | 色综合天天天天做夜夜夜夜做 | 中文字幕日本在线观看 | 国产一区免费 | 国产精品第85页 | 久久九九亚洲 |