问题标签 [bcc-bpf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-kernel - 如何构建和部署 BPF BCC C++ 应用程序?
有很多适用于 python 开发人员的文档,但是作为一个对 BCC/BPF 非常陌生的 C++ 开发人员,我发现很难确定从哪里开始构建和部署基于 BCC 的 C++ 应用程序。
我从哪说起呢?我查看了这些示例,但它们没有提供任何关于如何打包 BCC C++ 应用程序以部署在各种 Linux 发行版上的想法。
我该怎么做呢?有什么问题/担忧?
linux-kernel - 如何在 Ubuntu 20.04 上编译 BCC?
我正在尝试在 Ubuntu 20.04 上编译 BCC BPF 框架( https://github.com/iovisor/bcc )。我遵循了 18.04 的所有说明,但是当然;他们失败了。
我遇到的问题似乎与clang有关
如何在 Ubuntu 20.04 上进行 BCC 编译?
ebpf - BCC中的偏移量是什么意思
我一直在使用 BCC 来分析我的代码。作为其中的一部分,我正在查看使用 sym() 函数时获得的偏移量,该函数从地址和 pid 获取函数名称,并可选择显示偏移量。
使用 profile.py 工具进行分析时,我得到了以下结果:
我稍微调整了输出以读取以 10 为基数而不是 16 的偏移量。
我不明白在这种情况下偏移量是什么意思,文档读作“从符号开头的指令偏移量”,但我无法将输出中的偏移量与任何文件(源、asm、elf)匹配。如何读取 count1e8 偏移量 54?
最终目标是将此偏移量追溯到 ASM 指令或产生该指令的源文件行。
linux-kernel - 如何在 eBPF 程序中获取任务的 cgroup 路径?
我一直在尝试使用 Brendan Gregg 的tcptop BCC 工具来了解有关 eBPF 程序如何工作的更多信息。我试图让它打印任务的 CGROUP 路径。
凭借我对 Linux 系统编程的生疏知识,我认为我可以使用 from 的函数linux/cgroup.h
,特别是task_cgroup_path()
看起来很有希望,因为我可以将电流task_struct *
(从 获得bpf_get_current_task()
)传递给它。我正在使用带有4.19.59
内核的 CentOS7 机器。
但是,当我尝试执行修改后的 tcptop 时,验证程序失败并last insn is not an exit or jmp
显示错误消息。我试图理解为什么会这样。
这是修改的差异tcptop
:patch
这是验证器的输出
bcc-bpf - 无法运行 bcc-tools 分析器
我正在尝试运行密件抄送工具的“profile.py”,并遇到以下错误:
linux 头文件位于 /lib/modules 的正常位置下。这是在内核版本 4.19.88 下运行的。
任何指针将不胜感激。
bpf - 如何将符号文件加载到 BCC 分析器
使用密件抄送工具的配置文件,我在 C 程序的配置文件输出中得到的主要是“[未知]”。当然,这是意料之中的,因为未加载程序符号。但是,我不确定如何正确加载符号,以便“配置文件”程序可以获取它。我已经使用启用调试的“-g”构建了我的程序,但是如何将调试符号加载到“配置文件”?
linux-kernel - 如何使用 eBPF 修改用户空间内存?
我正在尝试编写一个示例代码,看看它是如何实际工作的。
如果一切正确,输出应该是:
我在密件抄送中写了一个示例,如下所示:
的内容foo1
应该改变,但它没有发生。
我曾尝试打印fname
甚至buf
使用bpf_trace_printk()
,但我的屏幕上什么也没有。
知道为什么内容没有改变吗?
更新-1
正如@Queole 所建议的那样
.它起作用了..所以我们必须给予(char *) PT_REGS_PARM2(ctx)
而不是(char *) PT_REGS_PARM1(ctx)
。我得到了输出,但有点奇怪。经过一些 3-4 cat foo1
,内容正在发生变化。
这种行为的原因是什么?
tcp - tcp_retransmit_skb 的 kprobe。而不是 tcp_retransmit_skb @tcp_states,我想 kprobe __napi_schedule
在 BPF Performance Tools 一书中,有一个 tcp_retransmit_skb 的 kprobe 实现。我想做同样的事情,但不是 tcp_retransmit_skb @tcp_states,我想kprobe_napi_schedule 并合并 'include/linux/netdevice.h' 的枚举 NAPI_STATE *。上面有我的实现:
当我尝试运行它时,它在我的“状态是”的 printf 中什么也没有显示。
输出是:
linux - 列出和使用自定义 Linux 内核跟踪点
我按照https://www.kernel.org/doc/Documentation/trace/tracepoints.txt上的教程在内核核心中创建了一个自定义跟踪点(即不在可加载模块中)。
但是,我没有看到perf list
或tplist
(来自密件抄送工具)的输出中列出的跟踪点。
所以,我不知道如何使用跟踪点。
问题:如何使跟踪点出现在perf list
/tplist
输出中?
谢谢。
bpf - 密件抄送:ImportError 无法导入名称 BPF
尝试运行示例时出现以下错误hello_world.py
。
我从源代码(链接)安装了密件抄送。我还安装了两个 python bcc 绑定包,python-bcc
但python3-bcc
没有运气。
我正在运行 Ubuntu 18.04和内核版本4.15.0-117-generic。
我在这里想念什么?