我正在尝试调试一些使用一些自定义引用计数/锁定的 C/Java 绑定。我想让 JVM 在每次给定对象进入或退出其监视器时打印一条消息。有什么办法可以做到这一点吗?基本上,我想要这个:
synchronized(lock) {
...
System.out.println("hi");
...
}
打印这个:
*** "lock" monitorenter
hi
*** "lock" monitorexit
我看过XX
选项并没有发现什么。这是 OpenJDK 6。
好问题。我能想到的唯一解决方案基本上是这样的:
使用自定义类加载器并使用字节码操作库(例如ASM http://asm.ow2.org/。 (ASM 有一个很好的示例,说明如何在类加载器中使用字节码重写。)
然后只需添加一个调用System.out.println
在每个之前monitorenter
and monitorexit
.
由于 ASM 库中良好的访问者模式,这不应该超过一两屏代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)