Linux内核动态调试设置 - 在重置时保持不变

时间:2014-09-08 15:30:07

标签: android linux-kernel

在Linux内核中启用动态调试后,我可以通过写入/ sys / kernel / debug / dynamic_debug / control来控制显示哪些打印件。但是,似乎重新启动会将此文件重置为其默认设置(禁用所有打印)。

有没有办法让设置在重置时保持不变?我有一个在启动过程的早期发出的打印件,我无法打印它,因为重新启动会在/ sys / kernel / debug / dynamic_debug / control中禁用此打印。

2 个答案:

答案 0 :(得分:2)

您应该能够使用引导加载程序配置或手动选项输入功能将dyndbg='your query here'添加到内核命令行。这将随引导加载程序而变化,尽管grub是最常见的

如果您使用grub作为引导加载程序,则必须将其添加到/boot/grub/grub.conf中的内核命令行中,以用于启动时启动的特定内核。

可以找到关于此内容的博客文章here。特别是它给出了这个例子:

dyndbg='module xhci_hcd +p'

本文还讨论了修改grub。

这个关于动态调试的kernel howto包含有关dyndbg的有用信息。本节适用

  

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

     

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

     

在x86系统上,例如ACPI启用是subsys_initcall和      dyndbg =“file ec.c + p”   将在ACPI设置期间显示早期的嵌入式控制器事务   您的机器(通常是笔记本电脑)有一个嵌入式控制器。   PCI(或其他设备)初始化也是使用的热门候选者   此引导参数用于调试目的。

     

如果foo模块不是内置的,foo.dyndbg仍然会被处理   启动时间,没有效果,但在模块运行时将被重新处理   稍后加载。 dyndbg_query =和bare dyndbg =仅在。处理   引导。

答案 1 :(得分:0)

您可以将其作为帖子启动脚本的一部分。在Android启动之后说(因为我在这里添加了Android标记),它运行某些sh脚本作为init过程的一部分。使用添加的动态调试命令修改sh文件,然后将其推入并重新启动。

请参阅此处了解后启动脚本文件信息。 https://android.stackexchange.com/questions/6558/how-can-i-run-a-script-on-boot