ftrace:只打印trace_printk()的输出

时间:2016-06-02 12:37:10

标签: linux linux-kernel tracing ftrace

是否可以在trace_printk()文件中仅转储trace个输出?我的意思是过滤掉函数跟踪器(或任何其他跟踪器)中的所有函数。

2 个答案:

答案 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 的内容。