第十章

第十章linux

 

1.打印內核調試信息:printk函數

printk函數的原型以下:工具

asmlinkage int printk(const char * fmt, ... )性能

2.防止printk函數下降Linux驅動性能調試

雖然使用printk函數能夠很方便地將消息寫入日誌文件或控制檯。但大量使用printk函數頻繁操做日誌文件或控制檯設備文件(/dev/console)會嚴重影響Linux驅動的性能(由於寫磁盤的速度遠沒有讀寫內存的速度快),所以,這就要求Linux驅動只在開發階段使用printk函數輸出消息, 在正式友布Linux驅動時將可能影響性能的printk函數去掉。固然,最容易想到的方法就是挨個刪除printk函數, 或註釋printk函數。但這樣作很麻煩,並且之後想加上printk函數也是一樣麻煩。 要想按制prrintk函數的輸出, 並且實現起來很方便,最好的方法無疑是利用C語言中的編譯指令 (#if、#else、#endif等)。日誌

3.經過文件虛擬系統(/proc)進行數據交互server

/proc並非真正的文件系統而是內存映射,全部讀寫/proc的操做都是對內存的讀寫,/proc文件能夠成爲linux驅動與用戶空間程序交互的工具。在Linux 驅動程序中能夠使用內核函數在/proc 目錄中建立和刪除虛擬文件,也能夠創建和刪除虛擬目錄。內存

四個函數:開發

(1) proc_mkdir 創建虛擬目錄rem

(2)create_proc_entry 創建虛擬文件

(3)create_proc_read_entry 創建虛擬只讀文件

(4) remove_proc_entry 刪除虛擬文件或目錄

4.調試工具

(1)用gdb調試用戶空間程序

(2)用gdbserver遠程調試用戶空間程序

(3)用kgdb遠程調試內核程序

相關文章
相關標籤/搜索