5

我正在尝试捕获在任何 android 应用程序中进行的所有方法调用。为此,我使用 JDI 为应用程序的每个正在运行的线程注册 MethodEntryRequest。我成功地做到了这一点,但我面临的问题是应用程序变得非常非常慢。所以我想知道我在执行过程中是否做错了什么。我正在添加我的代码,我首先注册 ClassPreparedRequest 以捕获应用程序进程对每个类的加载,并在其中为导致类加载的线程注册 MethodEntryRequest 和线程过滤器。

 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();
    }

注册 ClassPreparedRequest 的代码是

    ClassPrepareRequest cpr = mgr.createClassPrepareRequest();        
    cpr.addClassFilter("com.example.*");
    cpr.setSuspendPolicy(EventRequest.SUSPEND_NONE);
    cpr.enable();  
4

0 回答 0