嵌入式Linux的除錯技術

lucky嗷嗷發表於2016-06-24

對於複雜的Linux驅動以及HAL等程式庫,需要使用各種方法對其進行除錯。例如,設定斷點、逐步跟蹤程式碼、輸出除錯資訊等。

Printk函式的用法與printf函式類似,只不過printk函式執行在核心空間,printf函式執行在使用者空間。也就是說,像Linux驅動這樣的Linux核心程式只能使用printk函式輸出除錯資訊。Printk函式在printk.c檔案中實現。

雖然使用printk函式可以很方便的將訊息寫入日誌檔案或控制檯。但大量使用printk函式頻繁操作日誌檔案或控制檯裝置檔案(/dev/console)會嚴重影響Linux驅動效能(因此寫磁碟的速度遠沒有讀寫記憶體的速度快),因此,這就要求Linux驅動只在開發階段使用printk函式輸出資訊,在正式釋出Linux驅動時將可能影響效能的printk函式去掉。

在Linux檔案系統中,/proc經常被用來作為核心空間與使用者空間進行資料互動的工具。/proc檔案系統的行為方式與裝置檔案系統(/dev)類似。/proc是虛擬檔案系統,也就是說,/proc並不是真正的檔案系統,而是記憶體對映。所有讀寫/proc操作都是對記憶體的讀寫。所以讀寫/proc檔案系統的速度遠比讀寫/dev檔案系統的速度快。因此,/proc檔案系統也可以作為Linux驅動與使用者空間程式互動的工具。

 

相關文章