JPDA 架构研究12 - Agent利用环境指针访问VM(观察字段篇)

引入:java

上文咱们讲解了Agent如何利用环境指针访问VM的操做断点部分,这里咱们详细讲解观察字段篇。这也是咱们调试期间用的最多的操做。由于咱们要不断从Watch Field看他们值的改变。编程


分类8:观察字段jvm

a.SetFieldAccessWatch.启用对某字段进行访问的观察。每次访问都会建立一个FieldWatch事件。编程语言

jvmtiError
SetFieldAccessWatch(jvmtiEnv* env,
            jclass klass,
            jfieldID field)

从入参能够看出,它要2个参数,一个是类,一个是类的字段,所以它会发起一个事件对某类的某字段进行观察。注意,只有经过java编程语言或者JNI对该字段的访问才能够被观察。ide


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.清除对某字段修改的观察。it

jvmtiError
ClearFieldModificationWatch(jvmtiEnv* env,
            jclass klass,
            jfieldID field)
相关文章
相关标签/搜索