在linux中列印debug message

2021-04-14 13:17:39 字數 1103 閱讀 3720

echo 8 > /proc/sys/kernel/printk

#cat /proc/sys/kernel/printk

8 4 1 7

上面顯示的4個資料分別對應控制台日誌級別(console_loglevel)、預設的訊息日誌級別、最低的控制台日誌級別和預設的控制台日誌級別。

當日誌級別小於console_loglevel時,訊息才能顯示出來。

printk的日誌級別定義如下(在linux26/includelinux/kernel.h中):

#definekern_emerg"<0>"/*緊急事件訊息,系統崩潰之前提示,表示系統不可用*/

#definekern_alert"<1>"/*報告訊息,表示必須立即採取措施*/

#definekern_crit"<2>"/*臨界條件,通常涉及嚴重的硬體或軟體操作失敗*/

#definekern_err"<3>"/*錯誤條件,驅動程式常用kern_err來報告硬體的錯誤*/

#definekern_warning"<4>"/*警告條件,對可能出現問題的情況進行警告*/

#definekern_notice"<5>"/*正常但又重要的條件,用於提醒。常用於與安全相關的訊息*/

#definekern_info"<6>"/*提示資訊,如驅動程式啟動時,列印硬體資訊*/

#definekern_debug"<7>"/*除錯級別的訊息*/

extern int console_printk;

#define console_loglevel  (console_printk[0])

#define default_message_loglevel  (console_printk[1])

#define minimum_console_loglevel  (console_printk[2])

#define default_console_loglevel  (console_printk[3])

日誌級別的範圍是0~7,沒有指定日誌級別的printk語句預設採用的級別是 default_ message_loglevel,其定義列出如下(在linux26/kernel/printk.c中):

在Linux中列印函式呼叫堆疊 原創

本人學習筆記,參考如下 參考zhangbh prolin srv gcc rdynamic o my a.c zhangbh prolin srv my backtrace returned 5addresses my my func 0x1f 0x40089c my run 0x9 0x4008e...

在gdb中列印QString

gdb的print命令只能列印基本資料型別,像qstring這樣的複雜型別就不行了。如果在除錯過程中 命令列,或者xcode中 不能看qstring的值,豈不是很不爽。幸好,gdb提供了擴充套件功能,可以自定義巨集命令。把自定義的命令放到 home gdbinit檔案中,每次啟動gdb時就可以自動載...

linux環境在程式中列印呼叫棧的方法

使用除錯工具進行bug處理時非常有用,在閱讀和分析源 時也非常有用,以下 就說明了如何在自己的程式中列印呼叫堆疊 include include include include void print trace void void mytrace void for j 0 j nptrs j pri...