diff --git a/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java b/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java index 244c7290b..1274c01c3 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java @@ -42,6 +42,7 @@ public class SearchClassCommand extends AnnotatedCommand { private boolean isDetail = false; private boolean isField = false; private boolean isRegEx = false; + private String hashCode = null; private Integer expand; @Argument(argName = "class-pattern", index = 0) @@ -74,12 +75,18 @@ public class SearchClassCommand extends AnnotatedCommand { this.expand = expand; } + @Option(shortName = "c", longName = "classloader") + @Description("The hash code of the special class's classLoader") + public void setHashCode(String hashCode) { + this.hashCode = hashCode; + } + @Override public void process(CommandProcess process) { // TODO: null check RowAffect affect = new RowAffect(); Instrumentation inst = process.session().getInstrumentation(); - List> matchedClasses = new ArrayList>(SearchUtils.searchClass(inst, classPattern, isRegEx)); + List> matchedClasses = new ArrayList>(SearchUtils.searchClass(inst, classPattern, isRegEx, hashCode)); Collections.sort(matchedClasses, new Comparator>() { @Override public int compare(Class c1, Class c2) { diff --git a/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchMethodCommand.java b/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchMethodCommand.java index 7e22fc762..bb41ed291 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchMethodCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchMethodCommand.java @@ -49,6 +49,7 @@ public class SearchMethodCommand extends AnnotatedCommand { private String classPattern; private String methodPattern; + private String hashCode = null; private boolean isDetail = false; private boolean isRegEx = false; @@ -76,13 +77,19 @@ public class SearchMethodCommand extends AnnotatedCommand { isRegEx = regEx; } + @Option(shortName = "c", longName = "classloader") + @Description("The hash code of the special class's classLoader") + public void setHashCode(String hashCode) { + this.hashCode = hashCode; + } + @Override public void process(CommandProcess process) { RowAffect affect = new RowAffect(); Instrumentation inst = process.session().getInstrumentation(); Matcher methodNameMatcher = methodNameMatcher(); - Set> matchedClasses = SearchUtils.searchClass(inst, classPattern, isRegEx); + Set> matchedClasses = SearchUtils.searchClass(inst, classPattern, isRegEx, hashCode); for (Class clazz : matchedClasses) { for (Constructor constructor : clazz.getDeclaredConstructors()) {