无法使用 bpftool 获取 ebpf 程序 jitted 输出

Can't get ebpf program jitted output using bpftool

当我 运行 sudo bpftool prog show 我得到以下输出

39: socket_filter  name bpfprog1  tag e29cda32ba011d7f  gpl
    loaded_at 2019-09-08T14:21:57+0200  uid 1000
    xlated 248B  jited 169B  memlock 4096B  map_ids 30

但是如果我尝试使用以下命令使程序得到 jitted 输出

 sudo bpftool prog dump jited tag e29cda32ba011d7f

我收到一条错误消息,报告如下:

错误:无法获取程序信息 (3):地址错误

问题:我做错了什么? XD

您肯定使用了从 Linux 4.20 或更早版本编译的 bpftool 版本,并遇到了 fixed in version 5.0 的错误。更新 bpftool,按标签转储程序应该又可以工作了。

附带说明一下,我通常使用程序 ID 或固定路径,因为我发现检索我想要的程序更有用。根据您的用例,标签可能很有意义,特别是如果您经常加载相同的程序而无需更改(因此您一定会保留相同的标签)并且没有固定它们。