我正在使用 BCC 开发用于内核跟踪的 eBPF 程序。一旦我在运行我的代码时收到以下错误消息:
/virtual/main.c:16:36: error: member reference type 'struct Qdisc *' is a pointer; did you mean to use '->'?
bpf_trace_printk("%ld\n", qdisc.limit);
~~~~~^
我知道我的代码有什么问题,而且很容易纠正。但我注意到有一个名为/virtual/main.c
. 我猜 BCC 将我的原始 C 代码(传递给BPF
Python 中的对象)转换为存储在名为/virtual/main.c
. 然后中间的 C 代码通过Clang
and编译成 BPF 字节码LLVM
,BPF 代码最终被挂接到内核中。
我想知道我的猜测是否正确。如果是,有什么方法可以看到存储在其中的中间代码/virtual/main.c
?我想知道密件抄送对我的原始代码做了哪些更改。
非常感谢!