我的任务是使用动态探测器(如dtrace或systemtap)跟踪一些java应用程序。当然,应该在没有应用程序重启或重新编译的情况下完成。它应该允许在方法调用和内部JVM事件上动态设置拦截器。 在solaris中,它可以通过dtrace完成,但不能在其他系统中完成。 我如何解决这个问题?
答案 0 :(得分:1)
在Linux上(至少在fedora和red hat上),您可以使用systemtap
执行此操作,有关说明,请参阅this link。它使用byteman来跟踪java应用程序。虽然您不能在除linux之外的其他平台上使用systemtap
,但您可以将byteman
添加到项目中并在任何操作系统上使用它。 Byteman允许用户将自定义代码注入到运行的java类中,请参阅documentation。