BCC python
BCC
bpftrace
安装vscode 插件
python
ext:bt
c++
# Install kernel headers and BCC
sudo apt-get install bpfcc-tools linux-headers-$(uname -r) libbpfcc-dev libbpf-dev
from bcc import BPF
b=BPF(text='int kprobe__sys_clone(void *ctx) { bpf_trace_printk("Hello, World!\\n"); return 0; }')
dir(b)
b.trace_print()
sudo bpftrace -l "kprobe:*" | wc -l
sudo bpftrace -l "kprobe:*"|grep unlinkat
clang hello_world.c -o hello_world -lbcc
#参考libppf
GPL 内核辅助方法
https://github.com/nyrahul/ebpf-guide/blob/master/docs/gpl_license_ebpf.rst
Apache 授权协议 eBPF
https://github.com/iovisor/ubpf
Linux eBPF 的高级跟踪语言
bpftrace 是一种高级跟踪语言,适用于最新 Linux 内核 (4.x) 中提供的 Linux 增强型 Berkeley 数据包过滤器 (eBPF)。bpftrace 使用 LLVM 作为后端将脚本编译为 BPF 字节码,并利用BCC与 Linux BPF 系统交互,以及现有的 Linux 跟踪功能:内核动态跟踪(kprobes)、用户级动态跟踪(uprobes)、和跟踪点。bpftrace 语言的灵感来自 awk 和 C,以及 DTrace 和 SystemTap 等前身跟踪器。bpftrace 由Alastair Robertson创建。
https://github.com/iovisor/bpftrace
# BPF 编译器集合 (BCC)
BCC 是一个用于创建高效的内核跟踪和操作程序的工具包,包括几个有用的工具和示例。它利用了扩展的 BPF(伯克利数据包过滤器),正式名称为 eBPF,这是 Linux 3.15 中首次添加的一项新功能。BCC 使用的大部分内容都需要 Linux 4.1 及更高版本。
BCC 使 BPF 程序更容易编写,具有 C 语言的内核工具(并包括围绕 LLVM 的 C 包装器)以及 Python 和 lua 的前端。它适用于许多任务,包括性能分析和网络流量控制。
https://github.com/iovisor/bcc
./scripts/sign-file /home/abc/key/MOK.priv /home/abc/key/MOK.der samples/ftrace/ftrace-direct.ko ftrace-direct.ko
hexdump -C samples/ftrace/ftrace-direct.ko | tail