在启动时为多个文件启用动态调试

时间:2015-01-02 15:24:43

标签: linux linux-kernel

如何通过向linux内核提供命令行参数,在启动时为多个文件启用动态调试(pr_debug)?

我试图将以下内容作为参数 -

dyndbg='file drivers/<filename1> +p file drivers/<filename2> +p file drivers/<filename3> +p'

但是未启用动态调试。

我的语法是否正确?

2 个答案:

答案 0 :(得分:6)

用分号分隔控制命令。

dyndbg='file drivers/<filename1> +p; file drivers/<filename2> +p; file drivers/<filename3> +p'

答案 1 :(得分:3)

  1. 首先,检查您是否在CONFIG_DYNAMIC_DEBUG=y文件中启用了.config

  2. 测试内核启动时是否正常工作。

    echo -n 'module module_name +p' > /debugfs/dynamic_debug/control
    
  3. 使用dyndbg=QUERY

  4. 指定时,确保QUERY的格式正确(模块/文件夹的路径正确)

    对于内置模块,请使用dyndbg='module module_name +p'

    对于可加载模块,请使用module_name.dyndbg=<query>例如:xhci_hcd.dyndbg=+p

    您可以通过编写/etc/default/grub文件将其添加到Linux默认命令行中,如下所示:

    GRUB_CMDLINE_LINUX_DEFAULT="xhci_hcd.dyndbg=+p"
    

    Refer link

      

    引导过程中的调试消息

         

    在期间激活核心代码和内置模块的调试消息   启动过程,即使在用户空间和debugfs存在之前,也要使用   dyndbg =“QUERY”,module.dyndbg =“QUERY”,或者ddebug_query =“QUERY”   (ddebug_query已被dyndbg废弃,并已弃用)。 QUERY如下   上述语法,但不得超过1023个字符。您的   引导程序可能会施加下限。

         

    这些dyndbg参数在ddebug表之后处理   处理,作为arch_initcall的一部分。因此,您可以启用调试   所有代码中的消息都通过此引导在此arch_initcall之后运行   参数。