linux列印級別控制原理

2021-06-17 16:31:24 字數 1133 閱讀 9091

在乙個公用的標頭檔案裡面放入

#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 該檔案有四個數字值,它們根據日誌記錄訊息的重要性,定義將其傳送到何處。關於不同日誌級別的更多資訊...