1. https://github.com/eunomia-bpf/bpf-developer-tutorial
  2. 目录
  3. 1. 介绍 eBPF 的基本概念、常见的开发工具
  4. 2. eBPF Hello World,基本框架和开发流程
  5. 3. 使用 kprobe 监测捕获 unlink 系统调用
  6. 4. 使用 fentry 监测捕获 unlink 系统调用
  7. 5. 捕获进程打开文件的系统调用集合,使用全局变量过滤进程 pid
  8. 6. 使用 uprobe 捕获 bash 的 readline 函数调用
  9. 7. 捕获进程发送信号的系统调用集合,使用 hash map 保存状态
  10. 8. 捕获进程执行/退出时间,通过 perf event array 向用户态打印输出
  11. 9. 使用 exitsnoop 监控进程退出事件,使用 ring buffer 向用户态打印输出
  12. 10. 一个 Linux 内核 BPF 程序,通过柱状图来总结调度程序运行队列延迟,显示任务等待运行在 CPU 上的时间长度
  13. 11. 使用 hardirqs 或 softirqs 捕获中断事件
  14. 12. 使用 bootstrap 开发用户态程序并跟踪 exec() 和 exit() 系统调用
  15. 13. 使用 libbpf-bootstrap 开发程序统计 TCP 连接延时
  16. 14. 使用 libbpf-bootstrap 记录 TCP 连接状态与 TCP RTT
  17. 15. 使用 USDT 捕获用户态 Java GC 事件耗时
  18. 16. 编写 eBPF 程序 Memleak 监控内存泄漏
  19. 17. 编写 eBPF 程序 Biopattern 统计随机/顺序磁盘 I/O
  20. 18. 更多的参考资料
  21. 19. 使用 LSM 进行安全检测防御
  22. 20. 使用 eBPF 进行 tc 流量控制
  23. eBPF 高级特性与进阶主题
  24. 21. 在 Android 上使用 eBPF 程序
  25. 22. 使用 eBPF 追踪 HTTP 请求或其他七层协议
  26. 23. 使用 uprobe 捕获多种库的 SSL/TLS 明文数据
  27. 24. 使用 sockops 加速网络请求转发
  28. 25. 使用 eBPF 隐藏进程或文件信息
  29. 26. 使用 bpf_send_signal 发送信号终止进程
  30. 27. 使用 eBPF 添加 sudo 用户
  31. 28. 使用 eBPF 替换任意程序读取或写入的文本
  32. 29. BPF的生命周期:使用 Detached 模式在用户态应用退出后持续运行 eBPF 程序
  33. 30. 使用 eBPF 用户态捕获多种库的 SSL/TLS 明文数据
  34. bcc 教程与文档
  35. 31. BPF Features by Linux Kernel Version
  36. 32. Kernel Configuration for BPF Features
  37. 33. bcc Reference Guide
  38. 34. Special Filtering
  39. 35. bcc Tutorial
  40. 36. bcc Python Developer Tutorial

bpf-developer-tutorial

https://github.com/eunomia-bpf/bpf-developer-tutorial