是否可以只转储文件trace_printk()
中的输出trace
?我的意思是过滤掉函数跟踪器(或任何其他跟踪器)中的所有函数。
问问题
5298 次
2 回答
5
通常,您可以在选项目录中关闭选项,/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 函数跟踪器的秘密,其中包括一些关于一般过滤的部分。
于 2017-10-11T22:22:12.213 回答
1
对于一些无法从该线程获得更多信息的人...实际上,如果您使用 nop 作为 current_tracer,您将忽略除 trace_printk 之外的所有跟踪。
做
echo nop > current_tracer
并运行你的内核模块或任何其他包含你的 trace_printk 的东西。
于 2021-07-07T07:42:37.670 回答