首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ebpf只能使用k探针来监视内核函数吗?

ebpf只能使用k探针来监视内核函数吗?
EN

Stack Overflow用户
提问于 2022-11-17 13:57:56
回答 1查看 21关注 0票数 0

我想使用ebpf监视Linux内核函数。现在,我使用bcc编写代码,如下所示:

代码语言:javascript
复制
#!/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中的任何内核函数?

EN

回答 1

Stack Overflow用户

发布于 2022-11-17 15:10:12

多半是。除了黑名单函数之外,几乎所有函数都可以附加K探针。

K探针可以探测内核的大部分,除了它本身。这意味着,有些函数是k探针无法探测的。探测(捕获)这样的函数可能会导致递归陷阱(例如双故障),或者嵌套的探测处理程序可能永远不会被调用。K探测像黑名单一样管理着这些功能。如果要将函数添加到黑名单中,只需(1)包含linux/kProes.h,(2)使用NOKPROBE_SYMBOL()宏来指定黑名单中的函数。如果给定地址在黑名单中,则K探测将根据黑名单检查给定的探测地址,并拒绝注册。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74476715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档