首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDI/JPDA事件过滤

JDI/JPDA事件过滤
EN

Stack Overflow用户
提问于 2011-09-01 15:19:58
回答 1查看 292关注 0票数 1

在JDI中,有一个API将事件从JPDA使用的JVM中的处理事件中排除出来。这是使用以下方法完成的:

  1. addExclusionFilter(String)排除某些模式;例如addExclusionFilter("java.*")
  2. addClassFilter(String)包括某种模式;例如addClassFilter("java.util.*")

现在我两者都需要。我需要排除来自"java.*"的所有事件,但我需要接收来自"java.util.Iterator"的事件。

另外,请注意,例如,java.util.Iterator是由某个私有类在java.util.AbstractList中实现的接口。我们如何将此类事件接收到java.util.Iterator

当我使用这两种方法时,我实际上不再接收事件了。你知道怎么做吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-03-20 02:12:06

您可以使用以addClassFilter作为参数的ReferenceType方法,它(与String-arg版本不同)匹配给定类型的任何子类型。使用jdiscript和Java 8,激发Iterator方法调用可能类似于:

代码语言:javascript
复制
public static void main(String[] args) {
    JDIScript j = new JDIScript(new VMLauncher(OPTIONS, MAIN).start());

    OnVMStart start = se -> {
        List<ReferenceType> rts = j.vm().classesByName("java.util.Iterator");
        j.methodEntryRequest(me -> {
            println("Your handler here");
        }).addClassFilter(rts.get(0))
          .enable();
    };

    j.run(start);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7272491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档