问题描述
我想在eBPF中使用Uprobe来追踪我写的Java程序,但是不知道如何找到Java程序对应的符号表。 C语言中,编译后会生成平台相关的可执行文件,通过可执行文件可以得到方法对应的地址。 但是Java是解释型语言,没有可执行文件,eBPF是Linux工具,不知道Java语言相关信息。我知道JVM中的方法可以使用USDT进行跟踪,例如method__entry,但是没有提供有关方法参数的信息,因此有没有办法跟踪Java函数使用 eBPF? BCC,using USDT to print a method flow graph in high-level languages.
解决方法
不是 Java 跟踪专家,但我认为您需要查看 perf-map-agent。
这是 Brendan Greggs 在他的帖子 on perf 和 CPU flame graphs 中提到的,我相信它适用于 eBPF 和 perf。 This post 举例说明了如何从容器中调用该工具,以使用 BCC 工具生成火焰图。