zoukankan      html  css  js  c++  java
  • dynamic debug动态打印

         之前介绍过了 printk_once , 只打印一次。

         有些情况下,需要kernel运行时动态打印与否,dynamic debug就派上用场了。

         具体用法可以参考: kernel/Documentationdynamic-debug-howto.txt

         使用步骤:

           //  打印

           echo  'file nand.c line 4210 +p' > /sys/kernel/debug/dynamic_debug/control

           // 不打印
           echo  'file nand.c line 4210 -p' > /sys/kernel/debug/dynamic_debug/control

           // 使用例子

           pr_debug("  dynamic debug ");

           奇怪的是,加参数-c, 本地验证是不起作用的。

           至于为什么往 dynamic_debug/control 写入设置信息,可参考内核接口文件代码:

          

    static int __init dynamic_debug_init(void)
    {
    	struct dentry *dir, *file;
    	struct _ddebug *iter, *iter_start;
    	const char *modname = NULL;
    	int ret = 0;
    	int n = 0;
    
    	dir = debugfs_create_dir("dynamic_debug", NULL);
    	if (!dir)
    		return -ENOMEM;
    	file = debugfs_create_file("control", 0644, dir, NULL,
    					&ddebug_proc_fops);


     

    记得要编译kernel的时候使能,让dynamic debug编译进去。(menuconfig)

      │ Symbol: DYNAMIC_DEBUG [=y]                                                                                                         │ 
      │ Prompt: Enable dynamic printk() support                                                                                            │ 
      │   Defined at lib/Kconfig.debug:1039                                                                                                │ 
      │   Depends on: PRINTK [=y] && DEBUG_FS [=y]                                                                                         │ 
      │   Location:                                                                                                                        │ 
      │     -> Kernel hacking   

       或者直接修改

       ./config 文件
       CONFIG_DYNAMIC_DEBUG=y

       注意的是其依赖于: Depends on: PRINTK [=y] && DEBUG_FS [=y]      

  • 相关阅读:
    CodeForces19D:Points(线段树+set(动态查找每个点右上方的点))
    CodeForces-816B:Karen and Coffee (简单线段树)
    CodeForces292D:Connected Components (不错的并查集)
    CodeForces546D:Soldier and Number Game(筛区间素数因子个数和)
    CoderForces343D:Water Tree(dfs序+线段树&&特殊处理)
    HihoCoder1706 : 末尾有最多0的乘积(还不错的DP)
    HihoCoder1705: 座位问题(STL)
    【CQ18阶梯赛第8场】题解
    阿里开源 Dragonwell JDK 重磅发布 GA 版本:生产环境可用
    5年时间,我从开发做到总裁的秘籍--如何提升技术型管理者的领导力
  • 原文地址:https://www.cnblogs.com/phisy/p/3372068.html
Copyright © 2011-2022 走看看