Fork me on GitHub
侧边栏

ftrace的trace_options

ftrace 中的 trace_options 选项用于控制追踪数据的收集和显示方式。你可以通过 /sys/kernel/debug/tracing/trace_options 文件来设置这些选项。每个选项代表了不同的追踪行为或输出格式。以下是一些常见的 trace_options 选项及其含义:

  1. overwrite

    • 含义:当启用此选项时,如果缓冲区已满,新数据将覆盖旧数据。默认情况下,ftrace 在缓冲区满时会停止记录。
    • 用途:适用于持续监控的场景,确保始终有最新的数据。
  2. nooverwrite

    • 含义:与 overwrite 相反,追踪缓冲区满时不再记录新数据,以防止覆盖旧数据。这是默认行为。
    • 用途:适用于捕获特定时间段内的数据,防止关键数据被新数据覆盖。
  3. irq-info

    • 含义:当启用此选项时,追踪输出中将包含中断请求(IRQ)的额外信息,如中断号和中断状态。
    • 用途:调试与中断相关的问题时很有用。
  4. sym-addr

    • 含义:在追踪输出中显示符号和地址。这会将内核函数的符号名与其地址一起输出。
    • 用途:有助于精确定位内核中的函数地址。
  5. sym-offset

    • 含义:在符号名后显示偏移量。这对于调试特定代码路径中的偏移量问题非常有用。
    • 用途:追踪更细粒度的调用路径,特别是在大函数内的某些偏移位置。
  6. sym-userobj

    • 含义:与用户态的符号结合使用,显示用户空间对象的符号名及其地址。
    • 用途:分析用户态和内核态之间的交互时使用。
  7. latency-format

    • 含义:当启用此选项时,追踪数据将以延迟格式输出,显示每个事件的延迟信息。
    • 用途:用于分析系统延迟,特别是实时系统的性能调优。
  8. funcgraph-abstime

    • 含义:启用后,函数调用图将以绝对时间的形式显示每个函数的开始时间。
    • 用途:分析函数调用的精确时间点。
  9. funcgraph-duration

    • 含义:显示每个函数的持续时间,标注函数的执行时间。
    • 用途:调优函数的性能和执行时间。
  10. funcgraph-cpu

    • 含义:在函数调用图中显示 CPU 信息,指明函数在哪个 CPU 上执行。
    • 用途:多核系统调试时非常有用,能够跟踪函数在哪个核上运行。
  11. sched_switch

    • 含义:启用后,会记录进程调度切换事件。
    • 用途:调试和分析进程调度行为。
  12. verbose

    • 含义:启用详细输出,通常用于调试器内部开发或深入分析追踪数据时使用。
    • 用途:增加追踪数据的详细程度,适用于需要详细上下文信息的情况。

每个选项都可以通过在 /sys/kernel/debug/tracing/trace_options 文件中写入相应的选项名来启用或禁用。例如,启用 overwrite 选项可以通过 echo overwrite > /sys/kernel/debug/tracing/trace_options 来实现。禁用该选项则可以通过 echo nooverwrite > /sys/kernel/debug/tracing/trace_options 来实现。

posted @ 2024-08-08 21:58  yooooooo  阅读(138)  评论(0)    收藏  举报