Как исключить непроектные классы из Step Event в JVMTI? - PullRequest
1 голос
/ 07 мая 2020

В настоящее время я генерирую события Step следующим образом:

...
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 строками кода (и без библиотек), оно запускает 1 миллион событий шага. Как можно добавлять события шагов только в свой код?

...