【问题标题】:Failure to trace some syscalls with eBPF无法使用 eBPF 跟踪某些系统调用
【发布时间】:2020-02-13 23:57:12
【问题描述】:

我正在使用密件抄送跟踪多个系统调用,为什么我可以使用简单的attach_kprobe 跟踪诸如writeclosefchown 之类的系统调用,但无法跟踪诸如stat、@ 之类的系统调用987654326@?

我假设是其他系统调用,我无法跟踪但尚未找到哪些系统调用。我如何追踪statfstat 以及它们与通常的writeclose 有何不同?

示例代码:

b = BPF(text=prog)
b.attach_kprobe(event=b.get_syscall_fnname("fstat"), fn_name="syscall_fstat")

在我的 prog 中,我做了一个简单的打印

int syscall_fstat(void *ctx){
    bpf_trace_printk("fstat\n");
    return 0;
}

【问题讨论】:

  • 你能发布你在这两种情况下使用的代码吗?是什么让你认为你无法追踪它们?你有错误信息吗?
  • 没有错误信息。要触发 fstat,我相信“ls”应该就足够了,但我从来没有看到证实这一点的输出。另一方面,当使用 write 时,我可以看到输出

标签: ebpf bcc-bpf


【解决方案1】:

我应该使用 newstat,而不是使用 stat。

【讨论】:

  • 确实,如果您查看跟踪stat 的密件抄送示例之一的the source code,您可以看到它尝试了多个名称:statstatfsnewstat。恭喜您找到了您的系统所需的那个:)
猜你喜欢
  • 2016-11-13
  • 2012-04-03
  • 2017-01-04
  • 2012-04-03
  • 2011-08-02
  • 2019-09-25
  • 2012-06-20
  • 2015-07-02
  • 2013-10-15
相关资源
最近更新 更多