JVMTI中的区间观察点(Watched Field)的设置与使用
来源:互联网 发布:小女孩白丝袜淘宝 编辑:程序博客网 时间:2024/06/03 07:27
如果想用JVMTI来监控java程序中的某块区域的执行情况,就需要用到watched field中的函数
Set Field Access Watch
jvmtiErrorSetFieldAccessWatch(jvmtiEnv* env, jclass klass, jfieldID field)用这个函数可以设置开始的监测点
当程序执行到设置了监测点的区域时候就自动调用生成的
void JNICALLFieldAccess(jvmtiEnv *jvmti_env, JNIEnv* jni_env, jthread thread, jmethodID method, jlocation location, jclass field_klass, jobject object, jfieldID field)函数,直到监测点被清除,使用函数
jvmtiErrorClearFieldAccessWatch(jvmtiEnv* env,jclass klass,jfieldID field)
不过需要向虚拟机注册功能:
jvmtiCapabilities capa = {0};
capa.can_generate_field_access_events=1;
capa.can_generate_field_access_events=1;
err = g_jvmti->SetEventNotificationMode(JVMTI_ENABLE,JVMTI_EVENT_FIELD_ACCESS,NULL);
jvmtiEventCallbacks callbacks = {0};
callbacks.FieldAccess = &actionFieldAccess;
callbacks.FieldAccess = &actionFieldAccess;
其中 actionFieldAccess是一个函数指针,我们可以在函数中执行我们想要的检测
void JNICALL actionFieldAccess(jvmtiEnv *jvmti_env,JNIEnv* jni_env, jthread thread,jmethodID method,
jlocation location,jclass field_klass,jobject object,jfieldID field)
{
// do the check
}
jlocation location,jclass field_klass,jobject object,jfieldID field)
{
// do the check
}
- JVMTI中的区间观察点(Watched Field)的设置与使用
- 观察点设置newdebug
- 区间上的点到点的hash(即判断区间中的点,位于第几区间)(更新待续中...)
- 基于jvmti与C++实现Class的加密解密 (二)
- 在BlackBerry上使用OpenGL绘图(七):视图变换:观察点的运动
- android游戏开发框架libgdx的使用(八)--相机和观察点
- android游戏开发框架libgdx的使用(八)--相机和观察点
- Libgdx的使用(8)——相机和观察点
- JVMTI使用方案-C++
- jvmti
- C++--观察各种表达式与编译器使用的优化技巧
- 【Get深一度】谐振腔中的电场(E Field[V_per_m])与磁场(H field[A_per_m])分布
- ibatis 中$field$与#field#的区别
- vue的 计算属性(computed)、methods、watched三者区别
- vue的 计算属性(computed)、methods、watched三者区别
- vue的计算属性(computed)、methods、watched三者区别
- Field类的使用详解(测试)
- field symbol的使用
- json+jsp+JQuery 的一个小例子
- 遇到的数据库错误及解决(持续补充)
- PHP汉字转换拼音的类
- Linux系统调用 - 文件操作
- WinDbg 入门教程
- JVMTI中的区间观察点(Watched Field)的设置与使用
- 介绍C#解析HTML的两种方法
- CSDN出毛病啦!?。
- java三元(目)运算符
- tcp/ip模型及各层功能
- C#方法(1)
- shell命令与变量
- Infoworld编程领域的十一大发展趋势
- VS2008安装失败解决案例一则