是否可以在trace_printk()
文件中仅转储trace
个输出?我的意思是过滤掉函数跟踪器(或任何其他跟踪器)中的所有函数。
答案 0 :(得分:3)
通常,您可以在选项目录/sys/kernel/debug/tracing/options
内切换选项。使用ls
显示所有可切换选项。
# ls
annotate context-info funcgraph-abstime funcgraph-overhead func_stack_trace hex overwrite record-cmd sym-offset trace_printk
bin disable_on_free funcgraph-cpu funcgraph-overrun function-fork irq-info printk-msg-only sleep-time sym-userobj userstacktrace
blk_classic display-graph funcgraph-duration funcgraph-proc function-trace latency-format print-parent stacktrace test_nop_accept verbose
block event-fork funcgraph-irqs
通过echo
切换选项,即
echo -n "1" > /sys/kernel/debug/tracing/options/trace_printk
如果您要过滤掉trace_printk()
未生成的任何输出,则可能需要确保trace_printk()
是唯一的选项集。
如有疑问,请查看kernel documentation总是好的。还有一篇很棒的文章在我第一次学习名为Secrets of the Ftrace function tracer的ftrace时帮助了我,其中包括一些关于过滤的部分。
答案 1 :(得分:1)
对于一些无法从该线程中获得更多信息的人... 实际上,如果您使用 nop 作为 current_tracer,您将忽略除 trace_printk 之外的所有跟踪。
做
echo nop > current_tracer
并运行您的内核模块或其他任何包含您的 trace_printk 的内容。