linux 核心dev dbg開啟

2021-06-08 14:07:24 字數 2022 閱讀 6807

linux裝置驅動除錯,我們在核心中看到核心使用dev_dbg來控制輸出資訊,這個函式的實質是呼叫 printk(kern_debug )來輸出列印資訊。要開啟這個開關需要下面兩步。

1、開啟除錯開關:你除錯的檔案中必然包含了,或者《linux /paltforam_device.h》,後者包含了前者,在包含此標頭檔案之前,使用#define debug 1 來開啟除錯開關:例如

#include

#include

#include

#include

#define debug    1

#include

在linux/device.h檔案中:

#define dev_printk(level, dev, format, arg...)    \

printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)

#ifdef debug

#define dev_dbg(dev, format, arg...)        \

dev_printk(kern_debug , dev , format , ## arg)

#else

static inline int __attribute__ ((format (printf, 2, 3)))

dev_dbg(struct device * dev, const char * fmt, ...)

#endif

但是這個開啟了之後,也不能順利的輸出資訊,原因是printk有預設的資訊級別。

linux/kernel檔案中

#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            */

可以看到kern_debug是級別最低的。

2、修改檔案kernel/printk檔案

/* printk's without a loglevel use this.. */

#define default_message_loglevel 4 /* kern_warning */

/* we show everything that is more important than this.. */

#define minimum_console_loglevel 1 /* minimum loglevel we let people use */

#define default_console_loglevel 8 /* anything more serious than kern_debug */

其中default_console_loglevel 為終端console輸出的最低級別,比這嚴重的都將輸出。原來該值為7,則除錯資訊無法輸出,修改為8則全部有輸出。

可能比較關鍵的是debug需要在標頭檔案之前定義!!!

開啟linux 核心執行緒

函式說明 kthread create 建立執行緒。struct task struct kthread create int threadfn void data void data,const char namefmt,執行緒建立後,不會馬上執行,而是需要將kthread create 返回的t...

Linux驅動開發之使用dev dbg除錯裝置驅動

gqb666 1 最近在寫i2c下eeprom的驅動程式,但發現使用i2c new probed device函式無法列舉到裝置,於是想除錯該函式 位於driver i2c i2c core.c內 看到其中有些除錯資訊如下 cpp view plain copy i2c new probed dev...

樹莓派Linux核心編譯選項如何開啟TPM 2 0

本文更新於2018 08 11 同步至github 定製樹莓派核心原始碼,通過樹莓派spi介面載入並訪問tpm2.0裝置 所需硬體 x86主機一台,樹莓派3 b型號開發板一塊,大容量micro sd卡 usb讀卡器乙個,英飛凌tpm2.0評估板一套 所需軟體 任意版本樹莓派韌體 推薦使用最新版本 u...