这是一个基于 CO-RE
(一次编译,到处运行)的 libbpf
的 eBPF 的开发教程,提供了从入门到进阶的 eBPF 开发实践指南,包括基本概念、代码实例、实际应用等内容。我们主要提供了一些 eBPF 工具的案例,帮助开发者学习 eBPF 的开发方法和技巧。教程内容可以在目录中找到,每个目录都是一个独立的 eBPF 工具案例。
在学习 eBPF 的过程中,我们受到了 tutorial_bcc_python_developer 的许多启发和帮助,但从 2022 年的角度出发,使用 libbpf 开发 eBPF 的应用是目前相对更好的选择。但目前似乎很少有基于 libbpf 和 BPF CO-RE 出发的、通过案例和工具介绍 eBPF 开发的教程,因此我们发起了这个项目。
本项目主要基于 libbpf-boostrap 和 eunomia-bpf 两个框架完成,并使用 eunomia-bpf 帮助简化一部分 libbpf eBPF 用户态代码的编写。
教程主要关注于可观察性,并简要介绍了 eBPF 的其他应用,例如网络、安全等等。
教程的详细文档可以在这里找到:
- https://github.com/yunwei37/bpf-developer-tutorial
- https://gitee.com/yunwei37/bpf-developer-tutorial/tree/main
让 chatGPT 来帮助我们
本教程大部分内容由 chatGPT 生成,我们尝试教会 chatGPT 编写 eBPF 程序:
- 告诉它基本的 eBPF 编程相关的常识
- 告诉它一些案例:hello world,eBPF 程序的基本结构,如何使用 eBPF 程序进行追踪,并且让它开始编写教程
- 手动调整教程,并纠正代码和文档中的错误
- 把修改后的代码再喂给 chatGPT,让它继续学习
- 尝试让 chatGPT 自动生成 eBPF 程序和对应的教程文档!例如