開啟Linux的dev_dbg

來源:互聯網
上載者:User

[轉自:http://hi.baidu.com/dreammerge/item/1fe7e04db5cd8fea1e19bca0]

    Linux裝置驅動調試,我們在核心中看到核心使用dev_dbg來控制輸出資訊,這個函數的實質是調用 printk(KERN_DEBUG)來輸出列印資訊。要開啟這個開關需要下面兩步:

    1、開啟調試開關。

    你調試的檔案中必然包含了<linux/device.h>,或者<linux /paltforam_device.h>,後者包含了前者。在包含此標頭檔之前,使用#define DEBUG 1 來開啟調試開關。

例如:

#include <linux/kernel.h>#include <linux/init.h>#include <linux/clk.h>#include <linux/module.h>#define DEBUG    1#include <linux/platform_device.h> 

    在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)#elsestatic inline int __attribute__ ((format (printf, 2, 3)))dev_dbg(struct device * dev, const char * fmt, ...){    return 0;}#endif 

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

    linux/kernel.h檔案中

#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.h檔案 

/* 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需要在標頭檔之前定義!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.