Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从JVMTI中的Step事件中排除非项目类?_Java_Debugging_Jvmti_Jdi - Fatal编程技术网

Java 如何从JVMTI中的Step事件中排除非项目类?

Java 如何从JVMTI中的Step事件中排除非项目类?,java,debugging,jvmti,jdi,Java,Debugging,Jvmti,Jdi,目前,我是这样生成步骤事件的: ... capabilities.can_generate_single_step_events = 1; ... callbacks.SingleStep = SingleStep; jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_SINGLE_STEP, NULL); 然后是回调本身: void JNICALL SingleStep(jvmtiEnv *jvmt

目前,我是这样生成步骤事件的:

...
capabilities.can_generate_single_step_events  = 1;
...
callbacks.SingleStep            = SingleStep;
jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_SINGLE_STEP, NULL);
然后是回调本身:

void JNICALL
SingleStep(jvmtiEnv *jvmti_env,
            JNIEnv* jni_env,
            jthread thread,
            jmethodID method,
            jlocation location){

    sum++;  
    char *name;
    char *sig;
    char *gsig;
    jvmti_env->GetMethodName(method, &name, &sig, &gsig);
    printf("%s %s %s\n",name, sig, gsig);
}
但这会为JVM中执行的每一条指令生成一个事件,即使我有一个包含3行代码(没有库)的简单控制台应用程序,它也会触发100万步事件。如何仅将步骤事件添加到我自己的代码中