Linux内核中如何追踪write系统调用?

use*_*350 2 linux networking netfilter system-calls linux-kernel

我正在尝试这样做:我正在通过 iperf-一种开源工具从一台机器向另一台机器发送数据包,我想跟踪写入系统或发送调用。请帮助我做到这一点,如果有人可以指导通过 Ftrace 框架来跟踪系统调用,否则任何其他跟踪工具都会很棒。

Edg*_*lho 5

困难的部分是确切地知道要跟踪什么,以便您只能看到您想要的结果,但跟踪本身非常简单:

  • 首先,您的内核必须配置为 CONFIG_FTRACE=y
  • 确定要跟踪的事件

    cat /sys/kernel/debug/tracing/available_events

  • 将你选择的事件写入 set_event

    echo sys_enter_write > /sys/kernel/debug/tracing/set_event

  • 确定要跟踪的跟踪类型

    cat /sys/kernel/debug/tracing/available_tracers

  • 在 current_tracer 文件中写入所需的跟踪类型

    echo function_graph > /sys/kernel/debug/tracing/current_tracer

  • 启用跟踪:

    回声 1 > /sys/kernel/debug/tracing/tracing_on

  • 现在您可以根据需要运行“iperf -c...”,并在完成后禁用跟踪。

    回声 0 > /sys/kernel/debug/tracing/tracing_on

查看结果:

vi /sys/kernel/debug/tracing/trace