在乙個公用的標頭檔案裡面放入
#define rt_debug_error 1
#define rt_debug_warn 2
#define rt_debug_trace 3
#define rt_debug_info 4
unsigned long rtdebuglevel = rt_debug_error
#ifdef dbg
#define dbgprint_raw(level, fmt) \
do \
}while(0)
#define dbgprint(level, fmt) dbgprint_raw(level, fmt)
#define dbgprint_err(fmt) \
#define dbgprint_s(status, fmt) \
#else
#define dbgprint(level, fmt)
#define dbgprint_raw(level, fmt)
#define dbgprint_s(status, fmt)
#define dbgprint_err(fmt)
#endif
包含此標頭檔案
就可以使用類似:dbgprint(rt_debug_trace, ("you want print %s:%d\n", str,num));
此時需要設定rtdebuglevel為rt_debug_trace(3)或者rt_debug_info (4)才會有列印出現,rt_debug_error(1)、rt_debug_warn (2)級別都低於rt_debug_trace(3)所以如果rtdebuglevel設定為它們則級別不夠無法列印!
實際使用中系統中會有很多不同級別的列印訊息,通過修改rtdebuglevel的值就可以改變級別,從而控制列印輸出的數量,方便除錯;
當然實際情況中並不是所有的巨集定義都在乙個標頭檔案中,只有開始的四個級別是公用的,rtdebuglevel則是以全域性變數的形式出現的,需要引用時使用extern就ok了,通過巨集定義dbg還有修改rtdebuglevel可以靈活的的控制列印的數目;
linux核心列印級別
1.printk 是乙個核心的乙個記錄日誌的機制,經常用來記錄資訊或者警告。printk可以指定輸出日誌的優先順序,在include linux kern levels.h中有相應的巨集定義 1 define kern soh 001 ascii start of header 2 define k...
linux核心列印級別問題
函式printk的使用方法和printf相似,用於核心列印訊息。printk根據日誌級別 loglevel 對訊息進行分類。日誌級別用巨集定義,日誌級別巨集展開為乙個字串,在編譯時由預處理器將它和訊息文字拼接成乙個字串,因此printk 函式中日誌級別巨集和格式字串間不能有逗號。下面是兩個print...
linux核心的列印printk的級別
有時除錯核心模組,列印資訊太多了,可以通過修改 proc sys kernel printk檔案內容來控制。預設設定是6 4 1 7 cat proc sys kernel printk 7 4 1 7 該檔案有四個數字值,它們根據日誌記錄訊息的重要性,定義將其傳送到何處。關於不同日誌級別的更多資訊...