首页 > 代码库 > JPDA 架构研究12 - Agent利用环境指针访问VM(观察字段篇)
JPDA 架构研究12 - Agent利用环境指针访问VM(观察字段篇)
引入:
上文我们讲解了Agent如何利用环境指针访问VM的操作断点部分,这里我们详细讲解观察字段篇。这也是我们调试期间用的最多的操作。因为我们要不断从Watch Field看他们值的改变。
分类8:观察字段
a.SetFieldAccessWatch.启用对某字段进行访问的观察。每次访问都会创建一个FieldWatch事件。
jvmtiError SetFieldAccessWatch(jvmtiEnv* env, jclass klass, jfieldID field)
从入参可以看出,它要2个参数,一个是类,一个是类的字段,因此它会发起一个事件对某类的某字段进行观察。注意,只有通过java编程语言或者JNI对该字段的访问才可以被观察。
b.ClearFieldAccessWatch.清除对某字段访问的观察。
jvmtiError ClearFieldAccessWatch(jvmtiEnv* env, jclass klass, jfieldID field)
c.SetFieldModificationWatch.启用对某字段进行修改的观察。每次修改都会创建一个FieldModification事件。
jvmtiError SetFieldModificationWatch(jvmtiEnv* env, jclass klass, jfieldID field)
注意,只有通过java编程语言或者JNI对该字段的修改才可以被观察。
d.ClearFieldModificationWatch.清除对某字段修改的观察。
jvmtiError ClearFieldModificationWatch(jvmtiEnv* env, jclass klass, jfieldID field)
本文出自 “平行线的凝聚” 博客,请务必保留此出处http://supercharles888.blog.51cto.com/609344/1587779
JPDA 架构研究12 - Agent利用环境指针访问VM(观察字段篇)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。