diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java b/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java index b0ec83a..55c0380 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/debuggingControl/DebuggingControlAction.java @@ -185,25 +185,39 @@ Value statements = callInstanceMethod(vm, thread, methodName, (ObjectReference)methodExecution); methodName = "size"; int statementsSize = ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)statements)).value(); - System.out.print("(input)statementOrder? -> "); - int order = scanner.nextInt(); - Value statementOrder = vm.mirrorOf((order >= 0 && order < statementsSize) ? order : statementsSize - 1); - methodName = "get"; - Value statement = callInstanceMethod(vm, thread, methodName, (ObjectReference)statements, statementOrder); - // �G�C���A�X�����ɗp����objId��tp���擾 String packageName = "org.ntlab.traceCollector.tracer.trace"; String className = "TraceJSON"; - methodName = "findValueObjId"; - System.out.print("(input)occurrenceEXP? -> "); - Value occurrenceEXP = vm.mirrorOf(scanner.nextInt()); - Value valueObjId = callStaticMethod(vm, thread, packageName, className, methodName, statement, occurrenceEXP); - methodName = "getTracePoint"; - Value tp = callInstanceMethod(vm, thread, methodName, (ObjectReference)methodExecution, statementOrder); - - // �X�^�[�g�ƂȂ�G�C���A�X�𐶐�����getObjectFlow�����s - methodName = "getAlias"; - Value startAlias = callStaticMethod(vm, thread, packageName, className, methodName, valueObjId, tp, occurrenceEXP); + methodName = "findAllStartAlias"; + Value startAliasList = callStaticMethod(vm, thread, packageName, className, methodName, methodExecution); + methodName = "size"; + int startAliasListSize = ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAliasList)).value(); + System.out.println("-----------------------------------------------------"); + for (int i = 0; i < startAliasListSize; i++) { + methodName = "get"; + Value startAlias = callInstanceMethod(vm, thread, methodName, (ObjectReference)startAliasList, vm.mirrorOf(i)); + StringBuilder sb = new StringBuilder(String.format("%2d%s", i, ": ")); + methodName = "getObjectId"; + sb.append(String.format("%12s", ((StringReference)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias)).value() + " ")); + methodName = "getLineNo"; + sb.append(String.format("%4s", ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias)).value() + " ")); + methodName = "getStatementType"; + sb.append(String.format("%-16s", ((StringReference)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias)).value())); + sb.append(" -> "); + methodName = "getStatementSignature"; + sb.append(String.format("%-30s", ((StringReference)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias)).value() + " ")); + methodName = "getOccurrenceExp"; + sb.append(String.format("%3d%s", ((IntegerValue)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias)).value(), " ")); + methodName = "getClassName"; + sb.append(String.format("%-20s", ((StringReference)callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias)).value() + " ")); + System.out.println(sb); + } + System.out.println("-----------------------------------------------------"); + + System.out.print("(input)aliasNo? -> "); + int aliasNo = scanner.nextInt(); + methodName = "get"; + Value startAlias = callInstanceMethod(vm, thread, methodName, (ObjectReference)startAliasList, vm.mirrorOf(aliasNo)); methodName = "toString"; Value str = callInstanceMethod(vm, thread, methodName, (ObjectReference)startAlias); printValue("", "", str, true);