ebpf代码编写小技巧

news/2024/7/6 4:39:14 标签: eBPF, kernel

查看所有tracepoint

perf list 

perf追踪tracepoint

perf trace --no-syscalls --event 'net:*'

查看tracepoint的具体参数

sudo python3 /usr/share/bcc/tools/tplist -v 'net:napi_gro_receive_entry'
cat /sys/kernel/debug/tracing/events/net/netif_rx/format

内核vmlinux.h生成

sudo bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h

根据tracepoint的具体参数找到vmlinux.h中对应的结构体

内核已经提供了所有Tracepoint数据的类似类型,一般命名为trace_event_raw_<name>,如trace_event_raw_kfree_skb。但有时内核中的少量Tracepoints会重用常用的类型,因此如果上述模式不起作用,则需要在内核源码(或 vmlinux.h)中查找具体的类型名称,一般命名为trace_event_raw_<name>_template。例如vmlinux.h中不存在napi_gro_receive_entry对应的类型,但通过cat /sys/kernel/debug/tracing/events/net/napi_gro_receive_entry/format,能够查看到其参数如下
napi_gro_receive_entry

根据红框中的数据结构可以找到对应的trace_event_raw_net_dev_rx_verbose_template
trace_event_raw_net_dev_rx_verbose_template

查看可probe的函数符号

并非所有的函数都可probe,例如一些内联的函数无法probe,可通过如下办法查看可probe的内核函数
sudo cat /sys/kernel/debug/tracing/available_filter_functions
或者
cat /proc/kallsyms

查看bpf_trace_printk()的输出

sudo cat /sys/kernel/debug/tracing/trace_pipe


http://www.niftyadmin.cn/n/383920.html

相关文章

chatgpt赋能python:Python交流App:提高Python社区交流效率

Python 交流 App: 提高 Python 社区交流效率 Python 是当今流行程度最高的编程语言之一&#xff0c;有着广泛的应用场景和庞大的社区。 作为 Python 工程师&#xff0c;经常有各种问题需要得到解决&#xff0c;同时也希望能与同行进行交流、分享和学习。这时&#xff0c;一款高…

C语言字符串字面量拼接(string literal concatenation)语法(字符串拼接)

文章目录 背景字符串字面量拼接&#xff08;string literal concatenation&#xff09;语法 背景 今天看std::forward源码的时候&#xff0c;看到一句static_assert代码看不懂&#xff0c;为什么字符串能这样写&#xff1a; static_assert(!std::is_lvalue_reference<_Tp&…

160套小程序源码

源码列表如下&#xff1a; AppleMusic (知乎日报) 微信小程序 d artand 今日更新求职招聘类 医药网 口碑外卖点餐 城市天气 外卖小程序 定位天气 家居在线 微信小程序-大好商城&#xff0c;wechat-weapp 微信小程序的掘金信息流 微信跳一跳小游戏源码 微票源码-demo 急救应急处…

堆的应用:Top-K问题

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下堆的应用--Top-K问题的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个…

一分钟跑出 AI 图像的生成平台

*Stability AI 最近推出了一个名为 StableStudio 的 AI 图像生成平台&#xff0c;这是一个开源的、基于社区驱动的平台&#xff0c;任何人都可以访问和使用。StableStudio 提供了一系列功能强大的工具和库&#xff0c;包括预训练模型、数据集、模型评估和调试工具等&#xff0c…

如何在 Python 中生成一个范围内的 N 个唯一随机数?

在许多编程任务中&#xff0c;我们需要生成随机数来模拟实验、生成测试数据或进行随机抽样等操作。在 Python 中&#xff0c;有多种方法可以生成随机数&#xff0c;但有时我们还需要确保生成的随机数是唯一的&#xff0c;且在给定的范围内。本文将详细介绍如何在 Python 中生成…

Redis数据类型之String——字符串、数值、bitmap

Redis数据类型之String——字符串、数值、bitmap 注意索引位置一般从左到右 0开始&#xff0c;叫正向索引。从右到左-1开始叫反向索引 字符串 字符串有很多操作set、get、append、setrange、getrange等&#xff0c;每个都有自己对应的用处 SET SET key value 设置指定 key …

大数据存储方式有哪些?

写在前面 本文隶属于专栏《大数据从 0 到 1》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和文献引用请见《大数据从 0 到 1》 正文 数据常用的存储介质为磁盘和磁带。…