標籤:
第十章
列印核心的調試資訊printk:
printk與printf區別:
printk 函數該函數的用法與printf函數類似,具不過printk函數運行核心空間,printk函數運行在使用者空間。也就是說,像Linux驅動這樣的Linux核心程式只能使用prink函數輸出調試資訊。
其次應該防止printk函數可以很方便地將訊息寫入記錄檔或控制台,但是大量使用printk函數頻繁動作記錄檔案或控制台裝置檔案會嚴重影響Linux驅動的效能,因此這就要求Linux驅動只在開發階段使用printk函數輸出訊息,在正式發布Linux驅動時將可能影響效能的printk函數去掉。
然後通過虛擬檔案系統進行資料互動。
嵌入式調試方法:
1.模擬器。比如Qtopia Core可以用奇趣提供的Frame Buffer類比工具qvfb,ARM硬體類比可以用SkyEye開源項目。
2.遠端偵錯。調試器還在PC上,調試器與被調試的程式通過網路通訊。
3.通過LOG和Core Dump等檔案事後分析。
stdprm 標準印表機 LPT1連接埠
stdaux 標準串列裝置 COM1連接埠
stdin並不一定來自鍵盤,stdout和stderr也並不一定顯示在螢幕上,可以將它們重新導向到其他裝置或磁碟檔案上。
使用fprintf()時,第一參數推薦使用stderr而不要使用stdout,因為stderr的運行級要高一些,程式在異常退出時stderr可以輸出,而stdout就不行
對於複雜的Linux驅動及HAL等程式庫,需要使用各種方法對其進行調試,例如,設定斷點、逐步跟蹤代碼、輸出調試資訊等。Printk函數運行在核心空間,printf函數運行在使用者空間。
初始化Linux驅動
Static int _init printk_demo_init(void)
卸載Linux驅動
Static void _exit printk_demo_exit(void)
讀書筆記第十章