如何通过向linux内核提供命令行参数,在启动时为多个文件启用动态调试(pr_debug
)?
我试图将以下内容作为参数 -
dyndbg='file drivers/<filename1> +p file drivers/<filename2> +p file drivers/<filename3> +p'
但是未启用动态调试。
我的语法是否正确?
答案 0 :(得分:6)
用分号分隔控制命令。
dyndbg='file drivers/<filename1> +p; file drivers/<filename2> +p; file drivers/<filename3> +p'
答案 1 :(得分:3)
首先,检查您是否在CONFIG_DYNAMIC_DEBUG=y
文件中启用了.config
测试内核启动时是否正常工作。
echo -n 'module module_name +p' > /debugfs/dynamic_debug/control
使用dyndbg=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"
引导过程中的调试消息
在期间激活核心代码和内置模块的调试消息 启动过程,即使在用户空间和debugfs存在之前,也要使用 dyndbg =“QUERY”,module.dyndbg =“QUERY”,或者ddebug_query =“QUERY” (ddebug_query已被dyndbg废弃,并已弃用)。 QUERY如下 上述语法,但不得超过1023个字符。您的 引导程序可能会施加下限。
这些dyndbg参数在ddebug表之后处理 处理,作为arch_initcall的一部分。因此,您可以启用调试 所有代码中的消息都通过此引导在此arch_initcall之后运行 参数。