我正在尝试在我们的一个Linux设置中运行perf工具,但该设置没有Linux源代码或无法获得Linux源代码。 因此,在另一台机器上下载了Linux代码并编译了perf (cd tools/perf; make)。 然后将perf二进制文件复制到目标机器上。 但是,在开始记录时,它会显示“无法合成bpf事件”。
root> perf record -a -g --call-graph dwarf -p 836
Warning:
PID/TID switch overriding SYSTEM
Couldn't synthesize bpf events.
[ perf record: Woken up 1 times to write data ]
Failed to read max cpus, using default of 4096
[ perf record: Captured and wrote 0.057 MB perf.data ]
我们目标机器上运行的Linux版本为:5.4.66-rt38-intel-pk-preempt-rt
我用来编译perf的代码:https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git/log/?h=v5.4-rt
由于我遇到了“couldn't synthesize bpf events”这个错误,所以我认为在perf报告中没有获取到用户空间堆栈。请问我应该怎么做才能消除这个错误并使用perf获取正在运行的进程的用户空间堆栈呢?请给些建议!