
30 秒速读:ebpfexplorer 是一款用 Go 编写的终端 TUI 工具,专门用来浏览本机已加载的 eBPF 程序、maps 和 map 条目。如果你平时靠 bpftool 一条命令查一项,ebpfexplorer 能把”程序 → map → 条目 → 持有进程”串成一条可交互的浏览链:按验证器重写后的指令看代码、给二进制 map 数据套上 C 结构体格式、按字段搜索键。本篇讲清三种安装方式的取舍、装完必做的 4 个设置,以及打开”写 map”开关前必须知道的安全事项。
软件信息一览
| 项目 | 说明 |
|---|---|
| 最新版本 | v0.6.0(2026-10-21 发布,提供 linux-amd64 / linux-arm64 二进制) |
| 适用平台 | Linux |
| 实现语言 | Go(终端 TUI,英文界面) |
| 许可证 | 据项目说明,仓库根目录暂未声明 LICENSE 文件,商用前请先核对仓库说明 |
| 运行权限 | 查看程序指令需要 root;普通用户可进界面但指令列为空 |
下载方式怎么选:Release 二进制 vs 源码编译
| 方式 | 适合谁 | 说明 |
|---|---|---|
| Release 二进制(推荐) | 只想用工具的人 | v0.6.0 提供 linux-amd64 / linux-arm64 单文件,下载即用 |
| go install | 本机有 Go 环境的开发者 | go install github.com/noboruma/ebpfexplorer@latest |
| 源码编译 | 想改代码或跟 main 最新提交 | go build -o ebpfexplorer . |
推荐:Release 二进制。Go 静态编译的单文件、无运行时依赖,下载即用,升级时替换文件即可;本机有 Go 环境才考虑 go install;只有要改功能、跟 main 最新提交时才需要源码编译。
安装步骤(Release 二进制)
- 按架构下载:x86_64 取 amd64 包,aarch64 取 arm64 包;或一条命令自动判别:
arch=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/') curl -fsSL -o ebpfexplorer "https://github.com/noboruma/ebpfexplorer/releases/latest/download/ebpfexplorer-linux-${arch}" - 加执行权限:
chmod +x ebpfexplorer(卡点:跳过这步直接运行会报 Permission denied)
- root 启动:
sudo ./ebpfexplorer(卡点:读程序指令必须 root;普通用户启动能进界面,但指令列与源码列是空的,别误以为工具坏了)
验证:首屏程序列表出现本机已加载的 eBPF 程序(ID / Name / Type / Attached 列有内容)即安装成功。
装完先做这 4 件事
- 背下 5 个通用键:入口:任意界面通用。
[↑/↓]移动,[←/→]横向滚动查看被截断的列(在左边缘再按[←]会返回上一级),[enter]进入,[esc]返回,[q]退出。体感差别:全键盘操作,排查时不用在终端和鼠标之间来回切换。 - 给常用 map 定义显示格式:入口:条目界面按
[e]。按 map 实际的键/值大小写 C struct,例如struct { ipv4 saddr; __be16 sport; __u8 proto; __u32 ifindex; };格式按 map 名保存在/usr/local/bin/ebpfexplorer-formats.json,程序重载后自动复用。体感差别:十六进制天书变成saddr=10.0.0.1 sport=443这样的字段表。 - 想改 map 值先开写开关:入口:启动时加参数
。写入默认是关闭的;开启后在条目界面按sudo ./ebpfexplorer--allow-write[w]弹出逐字段编辑框,只写你改过的字段,写前二次确认。体感差别:生产机上多一道保险,手滑也写不坏内核数据。 - 学会看”验证器重写后”的指令:入口:程序列表选中程序按
[d]。代码页展示的是内核实际执行的指令(bpftool 风格 C 语法);用 clang-g编译的程序,右侧还有 C 源码行对照,无需源码文件;在跳转或 bpf-to-bpf 调用上按[enter]可跳进目标。体感差别:排查”验证器改了我的代码”这类问题时,一眼看到改动点。
注意事项与 FAQ
- 读指令必须 root:无 root 时指令列与源码列空白,这是权限问题,不是 bug。
- 程序没用 clang
-g编译:源码对照列自然为空,只能看指令——这是正常的。 - 写条目的红线:file descriptor 类的值(program array、map of maps、sockmap)写不了;键已不存在的条目不会被重新创建,删掉的写不回去。
- 格式定义必须对上大小:struct 总字节数要等于 map 的键/值大小,对不上会保存失败并在状态行提示,按 map 名重存一份即可。
适合谁、和 bpftool 怎么选
适合:写 XDP / TC / kprobe 程序的内核开发者、线上排查 eBPF 行为的运维、学 eBPF 想”看见”内核里有什么的人。
不适合:要图形界面、跨机器采集、长期监控告警的人——据项目说明,这些能力 README 没有提及,选型前建议先看源码确认。
横向对比:bpftool 是”一次查一项”的命令行,适合写脚本;ebpfexplorer 是”一条链浏览”的交互界面,适合人肉排查;BCC / bpftrace 是写探针采集数据,与它是互补关系而非替代关系。
一句话取舍:临时看本机 eBPF 全貌 → 用 ebpfexplorer;要编排采集、做监控告警 → 另选 bpftool 脚本或可观测性方案。
开源地址
GitHub 国内访问较慢,如打不开可多刷新几次
版本对比与推荐
推荐结论:只想用工具的人直接选 Release 二进制 v0.6.0;本机有 Go 环境才考虑 go install;只有要改功能、跟最新提交时才需要源码编译。
| 版本来源 | 适合场景 | 稳定性 | 推荐结论 |
|---|---|---|---|
| Release 二进制 v0.6.0 | 只想用工具的人 | 稳定版,单文件无运行时依赖 | 推荐:下载即用,升级替换文件即可 |
| go install 最新版 | 本机有 Go 环境的开发者 | 跟随最新发布,版本以仓库为准 | 可用:适合已有 Go 工具链的人 |
| 源码编译 main 分支 | 想改代码或跟最新提交 | 开发版,未必经过发布验证 | 不推荐日常排查使用 |
补充设置与排错指南
补充设置:格式文件、写开关与浏览习惯
第一,常用 map 的显示格式定义一次、长期复用:格式按 map 名保存,重载后自动复用,不用每次现写。第二,写开关默认关闭是对的:只在确实要改 map 值的当次启动时加参数开启,用完即关,不要把它写进日常启动命令。第三,排查时先用字段搜索定位键,再展开条目看详情,比逐页翻列表快得多。
常见问题补充
第一,非 root 启动时指令列与源码列空白:这是权限问题,不是工具故障,读程序指令必须用 root 启动。第二,没有用 clang -g 编译的程序:源码对照列自然为空,只能看指令,这是正常的。第三,格式定义保存失败:先核对结构体总字节数是否等于 map 的键或值大小,对不上会保存失败并在状态行提示,按 map 名重存一份即可。
报错排错
第一,运行报 Permission denied:先补 chmod +x 加执行权限,跳过这步直接运行就会报这个错。第二,进界面但程序列表为空:先确认是否用 sudo 启动,再确认本机确实已加载 eBPF 程序。第三,写条目被拒绝:先确认是否加了写开关参数,再确认目标值是不是 file descriptor 类的值,这类值写不了,键已不存在的条目也不会被重新创建。

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›







