歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android/Linux驅動開發之使用dev_dbg調試設備驅動

Android/Linux驅動開發之使用dev_dbg調試設備驅動

日期:2017/3/1 9:58:37   编辑:Linux編程

1、最近在寫I2C下EEPROM的驅動程序,但發現使用i2c_new_probed_device函數無法枚舉到設備,於是想調試該函數(位於driver/i2c/i2c-core.c內),看到其中有些調試信息如下:

i2c_new_probed_device(...)
{
...
if (addr_list[i] == I2C_CLIENT_END) {
dev_dbg(&adap->dev, "Probing failed, no device found\n");
return NULL;
}
...
}

但加載驅動模塊,該類調試信息並未打印出來(執行dmesg命令後同樣未找到調試信息)。

2、列出dev_dbg源碼實現:(include/linux/device.h中)

#if defined(DEBUG)
#define dev_dbg(dev, format, arg...) \
dev_printk(KERN_DEBUG , dev , format , ## arg)

問題找出,只需在引用頭文件#include/linux/device.h前定義DEBUG宏即可。

在include/linux/i2c.h中修改代碼如下:

#define DEBUG /* add for debug eeprom */
#include <linux/device.h> /* for struct device */
#undef DEBUG /* add for debug eeprom */

加載驅動驅動模塊後,並沒有調試信息打印出。如下圖:


但執行dmesg命令後Probing failed, no device found已經能夠打印出來,如下圖:

這是為什麼呢?

Copyright © Linux教程網 All Rights Reserved