gpt4 book ai didi

c - 如何读取 ebpf 中的堆栈跟踪内核端?

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:05 60 4
gpt4 key购买 nike

我想用堆栈中的地址过滤我的 ebpf,例如,如果堆栈跟踪包含 _do_fork 的地址,则写入映射。

我看到了这个https://www.kernel.org/doc/html/latest/bpf/bpf_design_QA.html#q-can-bpf-programs-access-stack-pointer说无法获取地址。但是我也看到了这个https://www.spinics.net/lists/netdev/msg497159.html"bpf 程序能够看到所有堆栈跟踪,然后可以在内核中执行处理或通过“将堆栈跟踪发送到用户空间”。所以我很困惑。最后一个问题是,如果可能的话,我们如何使用 bpf_get_stack 获取内核中堆栈跟踪的地址?

提前致谢

最佳答案

可以访问堆栈跟踪。

你提到的第一个链接(bpf_design_QA)不是指被跟踪的程序,它处理的是BPF程序本身在执行跟踪操作时使用的堆栈指针。但正如 bpf_get_stack() 的提交日志中所述,您可以访问堆栈。

有一些 BPF 帮助程序的文档,例如 bpf_get_stack()available online .你可能想看看代码 samples using it也是。

我自己在跟踪堆栈方面没有太多经验,但似乎很少有工具真正使用 bpf_get_stack() 助手。相反,来自 bcc 的工具如 profile或来自 offwaketime(BPF sideuser space side)的内核示例通常使用堆栈跟踪映射(BPF_MAP_TYPE_STACK_TRACE),因此您可能也想看看这个(bcc 甚至为他们提供了一个 specific API)。

关于c - 如何读取 ebpf 中的堆栈跟踪内核端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57268045/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com