当前位置: 首页>>代码示例>>Java>>正文


Java MethodEntryRequest.addClassFilter方法代码示例

本文整理汇总了Java中com.sun.jdi.request.MethodEntryRequest.addClassFilter方法的典型用法代码示例。如果您正苦于以下问题:Java MethodEntryRequest.addClassFilter方法的具体用法?Java MethodEntryRequest.addClassFilter怎么用?Java MethodEntryRequest.addClassFilter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.sun.jdi.request.MethodEntryRequest的用法示例。


在下文中一共展示了MethodEntryRequest.addClassFilter方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: stopOnEntry

import com.sun.jdi.request.MethodEntryRequest; //导入方法依赖的package包/类
/**
 * Suspend the main thread when the program enters the main method of the specified main class.
 * @param debugSession
 *                  the debug session.
 * @param mainClass
 *                  the fully qualified name of the main class.
 * @return
 *        a {@link CompletableFuture} that contains the suspended main thread id.
 */
public static CompletableFuture<Long> stopOnEntry(IDebugSession debugSession, String mainClass) {
    CompletableFuture<Long> future = new CompletableFuture<>();

    EventRequestManager manager = debugSession.getVM().eventRequestManager();
    MethodEntryRequest request = manager.createMethodEntryRequest();
    request.addClassFilter(mainClass);
    request.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);

    debugSession.getEventHub().events().filter(debugEvent -> {
        return debugEvent.event instanceof MethodEntryEvent && request.equals(debugEvent.event.request());
    }).subscribe(debugEvent -> {
        Method method = ((MethodEntryEvent) debugEvent.event).method();
        if (method.isPublic() && method.isStatic() && method.name().equals("main")
                && method.signature().equals("([Ljava/lang/String;)V")) {
            deleteEventRequestSafely(debugSession.getVM().eventRequestManager(), request);
            debugEvent.shouldResume = false;
            ThreadReference bpThread = ((MethodEntryEvent) debugEvent.event).thread();
            future.complete(bpThread.uniqueID());
        }
    });
    request.enable();

    return future;
}
 
开发者ID:Microsoft,项目名称:java-debug,代码行数:34,代码来源:DebugUtility.java

示例2: createRequest

import com.sun.jdi.request.MethodEntryRequest; //导入方法依赖的package包/类
public void createRequest(DebugProcessImpl debugProcess) {
  DebuggerManagerThreadImpl.assertIsManagerThread();
  if (!shouldCreateRequest(debugProcess)) {
    return;
  }
  try {
    RequestManagerImpl requestManager = debugProcess.getRequestsManager();
    if (isWatchEntry()) {
      MethodEntryRequest entryRequest = MethodBreakpoint.findRequest(debugProcess, MethodEntryRequest.class, this);
      if (entryRequest == null) {
        entryRequest = requestManager.createMethodEntryRequest(this);
      }
      else {
        entryRequest.disable();
      }
      entryRequest.addClassFilter(getClassPattern());
      debugProcess.getRequestsManager().enableRequest(entryRequest);
    }
    if (isWatchExit()) {
      MethodExitRequest exitRequest = MethodBreakpoint.findRequest(debugProcess, MethodExitRequest.class, this);
      if (exitRequest == null) {
        exitRequest = requestManager.createMethodExitRequest(this);
      }
      else {
        exitRequest.disable();
      }
      exitRequest.addClassFilter(getClassPattern());
      debugProcess.getRequestsManager().enableRequest(exitRequest);
    }
  }
  catch (Exception e) {
    LOG.debug(e);
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:35,代码来源:WildcardMethodBreakpoint.java

示例3: createRequest

import com.sun.jdi.request.MethodEntryRequest; //导入方法依赖的package包/类
public void createRequest(DebugProcessImpl debugProcess) {
  DebuggerManagerThreadImpl.assertIsManagerThread();
  if (!ENABLED || !debugProcess.isAttached() || debugProcess.areBreakpointsMuted() || !debugProcess.getRequestsManager().findRequests(this).isEmpty()) {
    return;
  }
  try {
    RequestManagerImpl requestManager = debugProcess.getRequestsManager();
    if (WATCH_ENTRY) {
      MethodEntryRequest entryRequest = (MethodEntryRequest)findRequest(debugProcess, MethodEntryRequest.class);
      if (entryRequest == null) {
        entryRequest = requestManager.createMethodEntryRequest(this);
      }
      else {
        entryRequest.disable();
      }
      entryRequest.addClassFilter(myClassPattern);
      debugProcess.getRequestsManager().enableRequest(entryRequest);
    }
    if (WATCH_EXIT) {
      MethodExitRequest exitRequest = (MethodExitRequest)findRequest(debugProcess, MethodExitRequest.class);
      if (exitRequest == null) {
        exitRequest = requestManager.createMethodExitRequest(this);
      }
      else {
        exitRequest.disable();
      }
      exitRequest.addClassFilter(myClassPattern);
      debugProcess.getRequestsManager().enableRequest(exitRequest);
    }
  }
  catch (Exception e) {
    LOG.debug(e);
  }
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:35,代码来源:WildcardMethodBreakpoint.java

示例4: methodEntryRequests

import com.sun.jdi.request.MethodEntryRequest; //导入方法依赖的package包/类
private static MethodEntryRequest methodEntryRequests(
        EventRequestManager manager,
        String classpattern) {
    MethodEntryRequest mereq = manager.createMethodEntryRequest();
    mereq.addClassFilter(classpattern);
    mereq.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
    return mereq;
}
 
开发者ID:HotswapProjects,项目名称:HotswapAgent,代码行数:9,代码来源:HotSwapperJpda.java

示例5: createRequestForPreparedClass

import com.sun.jdi.request.MethodEntryRequest; //导入方法依赖的package包/类
protected void createRequestForPreparedClass(@NotNull DebugProcessImpl debugProcess, @NotNull ReferenceType classType) {
  try {
    boolean hasMethod = false;
    for (Iterator iterator = classType.allMethods().iterator(); iterator.hasNext();) {
      Method method = (Method)iterator.next();
      String signature = method.signature();
      String name = method.name();

      if (getMethodName().equals(name) && mySignature.getName(debugProcess).equals(signature)) {
        hasMethod = true;
        break;
      }
    }

    if(!hasMethod) {
      debugProcess.getRequestsManager().setInvalid(
        this, DebuggerBundle.message("error.invalid.breakpoint.method.not.found", classType.name())
      );
      return;
    }

    RequestManagerImpl requestManager = debugProcess.getRequestsManager();
    if (isWatchEntry()) {
      MethodEntryRequest entryRequest = findRequest(debugProcess, MethodEntryRequest.class, this);
      if (entryRequest == null) {
        entryRequest = requestManager.createMethodEntryRequest(this);
      }
      else {
        entryRequest.disable();
      }
      //entryRequest.addClassFilter(myClassQualifiedName);
      // use addClassFilter(ReferenceType) in order to stop on subclasses also!
      entryRequest.addClassFilter(classType);
      debugProcess.getRequestsManager().enableRequest(entryRequest);
    }
    if (isWatchExit()) {
      MethodExitRequest exitRequest = findRequest(debugProcess, MethodExitRequest.class, this);
      if (exitRequest == null) {
        exitRequest = requestManager.createMethodExitRequest(this);
      }
      else {
        exitRequest.disable();
      }
      //exitRequest.addClassFilter(myClassQualifiedName);
      exitRequest.addClassFilter(classType);
      debugProcess.getRequestsManager().enableRequest(exitRequest);
    }
  }
  catch (Exception e) {
    LOG.debug(e);
  }
}
 
开发者ID:jskierbi,项目名称:intellij-ce-playground,代码行数:53,代码来源:MethodBreakpoint.java

示例6: createRequestForPreparedClass

import com.sun.jdi.request.MethodEntryRequest; //导入方法依赖的package包/类
protected void createRequestForPreparedClass(@NotNull DebugProcessImpl debugProcess, @NotNull ReferenceType classType) {
  try {
    boolean hasMethod = false;
    for (Iterator iterator = classType.allMethods().iterator(); iterator.hasNext();) {
      Method method = (Method)iterator.next();
      String signature = method.signature();
      String name = method.name();

      if (myMethodName.equals(name) && mySignature.getName(debugProcess).equals(signature)) {
        hasMethod = true;
        break;
      }
    }

    if(!hasMethod) {
      debugProcess.getRequestsManager().setInvalid(
        this, DebuggerBundle.message("error.invalid.breakpoint.method.not.found", classType.name())
      );
      return;
    }

    RequestManagerImpl requestManager = debugProcess.getRequestsManager();
    if (WATCH_ENTRY) {
      MethodEntryRequest entryRequest = (MethodEntryRequest)findRequest(debugProcess, MethodEntryRequest.class);
      if (entryRequest == null) {
        entryRequest = requestManager.createMethodEntryRequest(this);
      }
      else {
        entryRequest.disable();
      }
      //entryRequest.addClassFilter(myClassQualifiedName);
      // use addClassFilter(ReferenceType) in order to stop on subclasses also!
      entryRequest.addClassFilter(classType);
      debugProcess.getRequestsManager().enableRequest(entryRequest);
    }
    if (WATCH_EXIT) {
      MethodExitRequest exitRequest = (MethodExitRequest)findRequest(debugProcess, MethodExitRequest.class);
      if (exitRequest == null) {
        exitRequest = requestManager.createMethodExitRequest(this);
      }
      else {
        exitRequest.disable();
      }
      //exitRequest.addClassFilter(myClassQualifiedName);
      exitRequest.addClassFilter(classType);
      debugProcess.getRequestsManager().enableRequest(exitRequest);
    }
  }
  catch (Exception e) {
    LOG.debug(e);
  }
}
 
开发者ID:lshain-android-source,项目名称:tools-idea,代码行数:53,代码来源:MethodBreakpoint.java


注:本文中的com.sun.jdi.request.MethodEntryRequest.addClassFilter方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。