我正在尝试捕获在任何Android应用程序中进行的所有方法调用。为此,我使用JDI为应用程序的每个正在运行的线程注册MethodEntryRequest。我成功地做到了这一点,但我面临的问题是应用变得非常慢。所以我想知道我在实施中是否做错了。我正在添加我的代码,我首先注册ClassPreparedRequest以通过app进程捕获每个类的加载,并且我使用threadfilter注册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();