打印內核調試信息:printklinux
Printk函數的用法與printf函數類似,只不過printk函數運行在內核空間,printf函數運行在用戶空間。函數
Prink函數在printk.c文件中實現,該文件的路徑以下:工具
/root/kernel/linux_kernel_2.6.36/kernel/printk.c性能
Printk函數至少要有一個參數(格式字符串)若是格式字符串中包含有佔位符(%d、%s等),後面必須跟與佔位符相等數量的參數,以便一一對應傳入printk函數。調試
Printk文件是一個簡單的有4個數字組成的文本文件,該文本的默認數值如:6 4 1 7日誌
這4個數字的含義以下:server
6:將消息輸出到控制檯的級別。只有高與該級別的輸出信息纔會輸出到控制檯。blog
4:默認的消息日誌級別。若是不在printk函數中指定日誌級別,就會使用該值做爲默認級別。字符串
1:控制檯日誌級別可被設置的最小值(最高優先級別)。博客
7:控制檯日誌級別的默認值。
防止printk函數下降Linux驅動性能
Printk函數在控制檯顯示消息是經過/dev/console設備文件實現的。該設備文件只在字符界面的控制檯下才起做用,因此printk函數只有用在字符界面的控制檯上才能正常輸出消息。
若是不想使用printk輸出消息,只要將「#if1」中的1改成0便可。
經過虛擬文件系統(/proc)進行數據交互
Create_proc_read_entry函數在內部是經過調用Create_proc_entry函數實現的。
Linux文件的讀寫由屬性決定
刪除虛擬目錄以前,要先刪除虛擬目錄中的虛擬文件
調試工具
用gdb調試用戶空間程序
用gdbserver遠程調試用戶空間程序
用kgdb遠程調試內核程序
心得:Linux內核調試移植被不少人認爲是很是困難的。大多數人寧願直接使用printk函數輸出調試信息,也不肯意使用各類命令進行調試。由於這樣作並不必定能換來更多的好處。這裏除了介紹了printk函數調試技術外,也介紹了其餘的調試技術。這些調試技術雖然不必定都能用到,可是瞭解仍是很是有必要的。
本人博客地址:http://home.cnblogs.com/u/jie617530/