JPDA MethodEntryEvent导致应用运行非常慢

rai*_*day 5 java debugging android jdi jpda

我正在尝试捕获在任何android应用程序中进行的所有方法调用。为此,我正在使用JDI为该应用程序的每个运行线程注册MethodEntryRequest。我可以成功完成此操作,但是我遇到的问题是该应用程序变得非常非常慢。所以我想知道我在实现中是否做错了什么。我将代码添加到我首先注册ClassPreparedRequest的地方,以捕获应用程序进程对每个类的加载,并在其中将MethodEntryRequest与threadfilter注册到导致该类加载的线程。

 if(!traceMap.keySet().contains(event.thread()))
    {
        EventRequestManager mgr = vm.eventRequestManager();
        MethodEntryRequest menr = mgr.createMethodEntryRequest();
        menr.setSuspendPolicy(EventRequest.SUSPEND_NONE);
        menr.addThreadFilter(event.thread());
        menr.enable();
    }
Run Code Online (Sandbox Code Playgroud)

用于注册ClassPreparedRequest的代码为

    ClassPrepareRequest cpr = mgr.createClassPrepareRequest();        
    cpr.addClassFilter("com.example.*");
    cpr.setSuspendPolicy(EventRequest.SUSPEND_NONE);
    cpr.enable();  
Run Code Online (Sandbox Code Playgroud)