printk學習之(二):調試

1.printk日誌級別的來源

其實printk的基本原理我是通過韋東山的視頻和一篇CSDN博客瞭解到的

博客鏈接貼在下面:

https://blog.csdn.net/W1107101310/article/details/80526039

博客寫得很詳細,該博客主要分爲如下幾個部分:

printk原理/控制檯的選擇/printk日誌級別的設置

下面依次說一下這幾個宏的含義:

console_loglevel:控制檯當前日誌級別,從上一篇printk原理中知道,只有printk自帶的級別小於此值,printk纔會調用控制檯驅動打印,即,只有當printk("<n>...")中的n < console_loglevel時纔會打印

default_message_loglevel:默認消息日誌級別,從上一篇printk原理中知道,當printk中不帶顯示的日誌級別時,代碼會自動在log_buf中加上這個級別,即,如果默認消息日誌級別是n且printk中無日誌級別,系統自動加爲printk("<n>...")

minimum_console_loglevel:最小控制檯日誌級別:如果更改控制檯日誌級別不能小於此值

default_console_loglevel:默認控制檯日誌級別

2.printk日誌級別的設置

一般來說,修改printk的日誌級別有三種方法:

1).直接修改內核源碼(不提倡)

2).修改bootargs啓動參數(https://blog.csdn.net/W1107101310/article/details/80526039)

3).要將設置的值寫入proc系統/proc/sys/kernel/printk

 我們再來看一下printk中的8種日誌級別以及對應的宏:

#define	KERN_EMERG	"<0>"	/* system is unusable			*/
#define	KERN_ALERT	"<1>"	/* action must be taken immediately	*/
#define	KERN_CRIT	"<2>"	/* critical conditions			*/
#define	KERN_ERR	"<3>"	/* error conditions			*/
#define	KERN_WARNING	"<4>"	/* warning conditions			*/
#define	KERN_NOTICE	"<5>"	/* normal but significant condition	*/
#define	KERN_INFO	"<6>"	/* informational			*/
#define	KERN_DEBUG	"<7>"	/* debug-level messages			*/

Q:那麼KERN_DEBUG級別的打印要怎麼體現出來呢?

A:可以將console_loglevel改到8或者10甚至更高,因爲它就是個int類型的值嘛

所以,一般我們可以這樣使用printk:

3.你還在使用printk嗎?

未完...... 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章