如何在 ftrace 中打印 trace_printk 的完整跟踪文件?

Posted

技术标签:

【中文标题】如何在 ftrace 中打印 trace_printk 的完整跟踪文件?【英文标题】:How to print full trace file of trace_printk in ftrace? 【发布时间】:2019-07-22 08:22:21 【问题描述】:

我正在使用 trace_printk() 打印一些数字(它们大约是一百万个数字)。但是,当我检查 /sys/kernel/debug/tracing/trace ... 时,只会打印整个范围的一部分。

谁能建议我如何增加缓冲区大小或通过任何选项打印整个范围。

*注意:我不关心 ftrace 的其他输出。

*注2:我是使用ftrace和内核函数的初学者。

【问题讨论】:

【参考方案1】:

基于 Ubuntu 18.04

    buffer_size_kb 文件存在于 /sys/kernel/debug/tracing 目录中。

    您可以通过 echo 进行更改。

    $ eche echo 4096 > buffer_size_kb
    

    buffer_size_kb * cpu core count = buffer_total_size_kb 自动计算并存储。

    这将增加 ftrace 文件中的数量。

    覆盖文件存在于 /sys/kernel/debug/tracing/options 目录中。

    覆盖文件也可以改为回显。

    $ eche echo 4096 > buffer_size_kb
    

    默认值为 1,即丢弃最旧的事件(第一部分)。 相反,如果为零,则丢弃最近的事件(后面)。

    在这种情况下,ftrace文件的数量并没有增加,可以看到第一个或最后一个。

【讨论】:

以上是关于如何在 ftrace 中打印 trace_printk 的完整跟踪文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ftrace中使用跟踪标记?

Debugging the kernel using Ftrace

Debugging the kernel using Ftrace

Debugging the kernel using Ftrace

Debugging the kernel using Ftrace

ftrace在实际问题中的应用