我想使用ebpf监视Linux内核函数。现在,我使用bcc编写代码,如下所示:
#!/usr/bin/python3
# coding=utf-8
from bcc import BPF
from time import sleep
# define BPF program
bpf_program = """
int test_func(void *ctx) {
bpf_trace_printk("hello");
return 0;
}
"""
# load BPF
b = BPF(text=bpf_program)
b.attach_kprobe(event="__x64_sys_getpid", fn_name="test_func")
while 1:
sleep(100)
b.trace_print()这很好,我知道它是基于k探针实现的。
但是,我想知道我是否只能使用k探针来监视ebpf中的任何内核函数?
发布于 2022-11-17 15:10:12
多半是。除了黑名单函数之外,几乎所有函数都可以附加K探针。
K探针可以探测内核的大部分,除了它本身。这意味着,有些函数是k探针无法探测的。探测(捕获)这样的函数可能会导致递归陷阱(例如双故障),或者嵌套的探测处理程序可能永远不会被调用。K探测像黑名单一样管理着这些功能。如果要将函数添加到黑名单中,只需(1)包含linux/kProes.h,(2)使用NOKPROBE_SYMBOL()宏来指定黑名单中的函数。如果给定地址在黑名单中,则K探测将根据黑名单检查给定的探测地址,并拒绝注册。
https://stackoverflow.com/questions/74476715
复制相似问题