我想,不仅要跟踪 java 进程,还要在 systemtap 中使用对 openjdk 跟踪的新支持,包括热点跟踪和方法跟踪。
因此,我安装了 ddebs.ubuntu.com 存储库来安装内核调试符号——然后我可以调用一个使用内核 Tapset 但尚未使用 Java 的 stap 脚本。我确实注意到了一个名为 openjdk-7-jdk-dbgsym 的软件包,并尝试安装它以查看它是否具有 openjdk 的 systemtap Tapsets,但这与 openjdk-7-dbg 软件包冲突(然后 ubuntu 不让我错误报告,因为 openjdk-7-jdk-dbgsym 软件包不是来自“官方”服务器。如果我卸载那个并安装另一个,它无论如何也无济于事。
有没有人在ubuntu上成功做到这一点?
编辑:为了在具有 java byteman 支持的 ubuntu 上成功地从源代码构建 systemtap,您必须通过
--with-java=/usr/lib/jvm/default-java
(或您奇怪的 jvm 位置)
否则,建筑不会做罐子,所以需要。然后你必须按照源目录 java/README 文件中的步骤进行安装(不要忘记修改路径)。
还有另一个 --with-dyninst 选项,我没有尝试过,但可能会为其他调用模式“修复”它
编辑2:好吧,它可以编译甚至运行,但即使在给出的示例和设置了 BYTEMAN_HOME 的情况下,它也不会输出任何内容......