要学会调试内核打印debugfs

 前几天调试时候,因为处理速度问题,师父给的建议是把应用中不重要的打印删掉。内核中也不要直接用printk,可以把想查看的数据通过debugfs来查看。

    要学会调试内核打印debugfs_设计制作_嵌入式技术  

debugfs的用法和sysfs的用法相似。***在注册制好后,路径在/sys/kernel/debug路径下。

使用方法:

添加头文件

1)注册debugfs:struct dentry* debugfs_crea     te   _dir(const char *name, struct dentry *parent);

注册通常放在module_init加载的函数中。通过这一步的注册,在路径/sys/kernel/debug下面会出现我们注册的模块。

name是创建的目录名字,parent是该目录的父目录。如果填NULL,则直接出现在debugfs的根目录。

使用这种方法,可以创建subdir。

需要注册全局变量sta     ti   c struct dentry *s     pi   _429_debugfs;和全局的数字变量(最好注册到dev设备结构体中)。

2)因为要查看实际进中断次数,所以我注册的是数字接口的,数字的操作比较简单。通过函数:

struct dentry *debugfs_create_u8(const char *name, mode_t mode, struct dentry *parent, u8 *value);
struct dentry *debugfs_create_u16(const char *name, mode_t mode, struct dentry *parent, u16 *value);
struct dentry *debugfs_create_u32(const char *name, mode_t mode, struct dentry *parent, u32 *value);
struct dentry *debugfs_create_u64(const char *name, mode_t mode, struct dentry *parent, u64 *value);
struct dentry *debugfs_create_bool(const char *name, mode_t mode, struct dentry *parent, u32 *value);
struct dentry *debugfs_create_blob(const char *name, mode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob);
将要查看的数据注册。在使用的地方改变它的值,该值就可以在cd /sys/kernel/debug/myname cat *看到。

3)读数据

4)写数据

5)卸载模块:在module_exit注册的函数中,加入

void debugfs_remove(struct dentry *dentry);即可

读数写数还没用,偷个懒

you lust for my life, darkness and light



99
111
0
21

相关资讯

  1. 1、《环太平洋》各地满场轰动一票难求带热暑期档2373
  2. 2、今日上映丨错过了《超时空同居》还要错过超时空对话吗4456
  3. 3、七十多年前的老电影《卡萨布兰卡》,为什么值得看很多遍?2245
  4. 4、86版《西游记》的嫦娥扮演人,一生只演了1部戏,下海后身家过亿2260
  5. 5、梁洛施复出上节目罕见谈感情,不悔未婚生子却又为何落泪?2220
  6. 6、周润发的地位是吹出来的?看看赵本山、周星驰是怎么称呼他的976
  7. 7、郑凯主持海南电影节!语不惊人死不休?同生日朱一龙遭遇猪队友?3577
  8. 8、告别航航后迎来新的惊喜,易烊千玺特邀出演的《世间有她》明日即将官宣定档!983
  9. 9、《大轰炸》片场刘烨“戏精”上身,带跑文艺男神耿乐4408
  10. 10、《伙记办大事》躲在幕后的聂先生会是谁?我想到这四种可能!175
全部评论(0)
我也有话说
0
收藏
点赞
顶部