echo 8 > /proc/sys/kernel/printk上面顯示的4個資料分別對應控制台日誌級別(console_loglevel)、預設的訊息日誌級別、最低的控制台日誌級別和預設的控制台日誌級別。#cat /proc/sys/kernel/printk
8 4 1 7
當日誌級別小於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...