Bug 80977 - transient test failures
diff --git a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java index dce9f45..5b1078e 100644 --- a/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java +++ b/org.eclipse.jdt.debug/model/org/eclipse/jdt/internal/debug/core/model/JDIStackFrame.java
@@ -437,6 +437,8 @@ } catch (DebugException exception) { if (!getThread().isSuspended()) { thisObject= null; + System.out.println(">> Thread not suspended, removed 'this' <<"); + exception.printStackTrace(System.out); } else { throw exception; } @@ -449,6 +451,7 @@ // removal of 'this' fVariables.remove(0); index= 0; + System.out.println("\t>>previous 'this' not null"); } else { if (oldThisObject == null && thisObject != null) { // creation of 'this' @@ -609,27 +612,35 @@ return null; } IVariable[] variables = getVariables(); + System.out.println("findVariable(" + varName +")"); IJavaVariable thisVariable= null; for (int i = 0; i < variables.length; i++) { IJavaVariable var = (IJavaVariable) variables[i]; + System.out.println("\tcomparing local: " + var.getName()); if (var.getName().equals(varName)) { + System.out.println("\t>>found"); return var; } if (var instanceof JDIThisVariable) { // save for later - check for instance and static vars thisVariable= var; + System.out.println("\t>>[cache 'this']"); } } if (thisVariable != null) { IVariable[] thisChildren = thisVariable.getValue().getVariables(); + System.out.println("\t>>searching field members of 'this'"); for (int i = 0; i < thisChildren.length; i++) { IJavaVariable var= (IJavaVariable) thisChildren[i]; + System.out.println("\tcomparing field: " + var.getName()); if (var.getName().equals(varName)) { + System.out.println("\t>>found"); return var; } } } + System.out.println("\t>>no matches"); return null;