想用eBPF中的Uprobe来跟踪自己写的Java程序,但是不知道如何找到Java程序对应的符号表。在C语言中,编译后会生成平台相关的可执行文件,通过可执行文件可以得到方法对应的地址。但是Java是解释型语言,没有可执行文件,而eBPF是Linux工具,不知道Java语言相关信息。我知道JVM中的方法可以使用USDT进行跟踪,例如method__entry,但是没有提供有关方法参数的信息,所以有没有办法跟踪Java函数使用 eBPF? BCC,使用USDT打印高级语言的方法流程图。
想用eBPF中的Uprobe来跟踪自己写的Java程序,但是不知道如何找到Java程序对应的符号表。在C语言中,编译后会生成平台相关的可执行文件,通过可执行文件可以得到方法对应的地址。但是Java是解释型语言,没有可执行文件,而eBPF是Linux工具,不知道Java语言相关信息。我知道JVM中的方法可以使用USDT进行跟踪,例如method__entry,但是没有提供有关方法参数的信息,所以有没有办法跟踪Java函数使用 eBPF? BCC,使用USDT打印高级语言的方法流程图。
不是 Java 跟踪专家,但我认为您需要查看perf-map-agent。
这是 Brendan Greggs 在他关于 perf和CPU 火焰图的帖子中提到的,我相信它适用于 eBPF 和 perf。这篇文章提供了一个示例,说明如何从容器中调用该工具,以使用 BCC 工具生成火焰图。