linux - 如何跟踪Linux内核中的write系统调用?

标签 linux networking linux-kernel system-calls netfilter

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

最佳答案

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

  • 首先,您的内核必须配置为 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

  • 启用跟踪:

    echo 1 >/sys/kernel/debug/tracing/tracing_on

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

    echo 0 >/sys/kernel/debug/tracing/tracing_on

查看结果:

vi/sys/kernel/debug/tracing/trace

关于linux - 如何跟踪Linux内核中的write系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889563/

相关文章:

c# - 在 Rider 中添加用于测试的资源文件

c - 无法为 Hello World 返回 'make',无法获取内核 header

linux - 如何增加 Red Hat Enterprise Linux 5 中的最大打开文件限制?

networking - 使用公共(public) IP 的 Kubeadm init/join

ajax - 如何验证浏览器是否可以访问某个域?

networking - 是否可以将 ForceBindIP 限制为仅入站/出站流量?

c - 是否可以在不使用 file_operations 结构的情况下编写字符驱动程序?

linux - Linux 内核中的 TCP 调用流程

c - c语言fopen隐藏文件

java - 安排 Java 作业每周运行一次,每次使用不同的参数