通过bcc 使用ebpf
来源:互联网 发布:电脑壁纸软件哪个好 编辑:程序博客网 时间:2024/05/21 07:11
通过前一篇博文知道要使用ebpf debug kernel还是相当麻烦的,github 上有个项目
https://github.com/iovisor/bcc 可以简化ebpf的操作,应为kernel space已经支持ebpf,所以这个项目主要集中在user space部分的编写,user space 可以通过各种语言编写,这里以python为例.
下面的代码的是在调用sys_clone的时候调用hello 函数来输出Hello, World
#!/usr/bin/env python
#
# This is a Hello World example that formats output as fields.
from bcc import BPF
# define BPF program
定义处理函数
prog = """
int hello(void *ctx) {
bpf_trace_printk("Hello, World!\\n");
return 0;
}
"""
# load BPF program
加载BPF 加载hello
b = BPF(text=prog)
指定调用sys_clone时候对应的回调函数是hello
b.attach_kprobe(event="sys_clone", fn_name="hello")
# header
print("%-18s %-16s %-6s %s" % ("TIME(s)", "COMM", "PID", "MESSAGE"))
# format output
监听并输出log
while 1:
try:
(task, pid, cpu, flags, ts, msg) = b.trace_fields()
except ValueError:
continue
print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))
https://github.com/iovisor/bcc 可以简化ebpf的操作,应为kernel space已经支持ebpf,所以这个项目主要集中在user space部分的编写,user space 可以通过各种语言编写,这里以python为例.
下面的代码的是在调用sys_clone的时候调用hello 函数来输出Hello, World
#!/usr/bin/env python
#
# This is a Hello World example that formats output as fields.
from bcc import BPF
# define BPF program
定义处理函数
prog = """
int hello(void *ctx) {
bpf_trace_printk("Hello, World!\\n");
return 0;
}
"""
# load BPF program
加载BPF 加载hello
b = BPF(text=prog)
指定调用sys_clone时候对应的回调函数是hello
b.attach_kprobe(event="sys_clone", fn_name="hello")
# header
print("%-18s %-16s %-6s %s" % ("TIME(s)", "COMM", "PID", "MESSAGE"))
# format output
监听并输出log
while 1:
try:
(task, pid, cpu, flags, ts, msg) = b.trace_fields()
except ValueError:
continue
print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))
阅读全文
0 0
- 通过bcc 使用ebpf
- eBPF编程
- ebpf 实例
- 张亦鸣: eBPF 简史
- 使用TEXTPAD + BCC 打造WINDOWS下的C++ IDE!
- 【python】使用python smtplib库发邮件添加cc,bcc
- 再见。bcc
- BCC校验
- bcc校验
- makefile for bcc
- gvim+mingw/bcc/msc
- BCC 校验算法 (java)
- delphi BCC校验
- CC和BCC
- 邮件to cc bcc
- BCC操作Log
- 【HDU3394】Railway【BCC】【桥】
- 安装bcc-tools
- 几乎有序数组排序
- gradlew编译时出现Unsupported major.minor version 52.0
- k数和-LintCode
- 存储过程
- 使用service实现通知栏下载支持断点续传
- 通过bcc 使用ebpf
- Linux笔记 命令行
- MFC让对话框窗口始终在最前&MFC弹出非模态对话框
- 一行代码解决各种IE兼容问题
- 深入理解Java:注解(Annotation)--注解处理器
- 某年某月有几天?(代码)
- python中列表,元组,字符串如何互相转换
- 源码解读腾讯 GT 的性能测试方案
- POJ 2409 Let it Bead (Polya计数)