eBPF
文章平均质量分 80
阿源仔
要创造人类的幸福,只能靠我们自己。
展开
-
【踩坑】关于在eBPF程序中构建长字符串并进行修改
场景:在eBPF程序中一般难以声明很长的数组,如char str[512];当在程序里这样做的时候很容易爆栈,错误提示类似error: <unknown>:0:0: in function bpf_openat_parser i32 (%struct.bpf_raw_tracepoint_args*): Looks like the BPF stack limit of 512 bytes is exceeded. Please move large on stack variable原创 2022-03-03 17:35:14 · 1872 阅读 · 0 评论 -
使用libbpf-bootstrap构建第一个libbpf+BPF CO-RE程序
文章目录前言选择libbpf+BPF CO-RE的理由使用libbpf-bootstrap的理由Libbpf-bootstrap结构Minimal:最小应用程序分析运行minimal:代码分析:BPF side代码分析:User space sideMakefile分析动手构建属于自己的Hello World程序前言本文参考了相关博客:Building BPF applications with libbpf-bootstrap选择libbpf+BPF CO-RE的理由libbpf 是一个比BCC更原创 2021-07-16 21:17:21 · 4770 阅读 · 3 评论 -
【eBPF】使用bcc构建tracepoint程序
前言Tracepoint Programs是一类典型的eBPF程序。《Linux Observability with BPF》一书中这样介绍Tracepoint Programs:This type of program allows you to attach BPF programs to the tracepoint handler provided by the kernel. Tracepoint programs are defined with the type BPF_PROG_T原创 2021-07-13 23:13:16 · 771 阅读 · 0 评论 -
【踩坑】使用libbpfgo构建你的第一个eBPF项目
文章目录前言一、为什么使用libbpf?二、环境搭建1.Libbpf相关环境搭建2.GO环境搭建三、使用libbpfgo编译运行eBPF程序步骤1:生成头文件步骤2:Clang将BPF程序的源代码编译为.o对象文件步骤3:使用GO编译为二进制文件并运行后记前言本文参考:How to Build eBPF Programs with libbpfgo但实际运行时出现了许多情况,因此记录分享。写在最前:使用libbpf请将系统更新到最新版本,本文环境为Ubuntu21.04。Ubuntu最新版本下载原创 2021-06-13 14:23:54 · 3032 阅读 · 4 评论 -
解决在Ubuntu系统BCC编译BPF程序头文件失败的情况
问题描述:在实现EBPF学习——获取内核网络中的SOCKET信息 中的例子时,发现在引入下图的头文件时会报错。代码段:报错显示:原因分析:经过求助得知,我的bcc是通过apt-get方法下载安装的,即sudo apt-get install bpfcc-tools linux-headers-$(uname -r)然而,ubuntu的包管理长期未更新,下载下来的是不稳定版本ubuntu发行版下推荐从源码进行编译解决方案:首先,先卸载掉已经安装的bcc组件等,即sudo apt原创 2021-06-02 00:34:26 · 2804 阅读 · 3 评论