是否有可能仅将trace_printk()
输出转储到trace
文件中?我的意思是,在函数跟踪器(或任何其他跟踪器)中过滤掉所有函数。
是否有可能仅将trace_printk()
输出转储到trace
文件中?我的意思是,在函数跟踪器(或任何其他跟踪器)中过滤掉所有函数。
/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()
是唯一设置的选项。
当您有疑问时,查看内核文档总是一个好主意。还有一篇很棒的lwn文章,帮助我初学ftrace时受益匪浅,名为Ftrace函数跟踪器的秘密,其中包括一些关于过滤的一般性内容。
对于一些无法从这个帖子中获取更多信息的人... 实际上,如果您将nop用作当前跟踪器,您将忽略除trace_printk之外的所有跟踪。
做
echo nop > current_tracer
运行您的内核模块或包含trace_printk的其他任何内容。
none
是无效的值。(nop
在那里,但它用于从跟踪中删除所有跟踪器。) - Ravinop
,它可以工作。 - imbr