diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackLabelProvider.java index ce4190e..de53070 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackLabelProvider.java @@ -16,29 +16,27 @@ import com.sun.jdi.ThreadReference; public class CallStackLabelProvider extends LabelProvider { - + @Override public String getText(Object element) { if (element instanceof TreeNode) { Object value = ((TreeNode)element).getValue(); if (value instanceof MethodCaller) { MethodCaller mc = (MethodCaller)value; - ObjectReference obj = mc.getObj(); - try { - if (obj instanceof ThreadReference) { - return "ThreadID: " + mc.getThreadId(); - } else if (obj != null) { - return ((StringReference)mc.callInstanceMethod("getSignature")).value(); - } - } catch (InvalidTypeException | ClassNotLoadedException - | InvocationException | IncompatibleThreadStateException e) { - e.printStackTrace(); - } + return "ThreadID: " + mc.getThreadId(); + } + if (value instanceof CallStackModel) { + CallStackModel callStackModel = (CallStackModel)value; + StringBuilder text = new StringBuilder(); + text.append(callStackModel.getSignature()); + text.append(" line: "); + text.append(callStackModel.getCallLineNo()); + return text.toString(); } } return ""; } - + @Override public Image getImage(Object element) { if (element instanceof TreeNode) { diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackMethodExecutions.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackMethodExecutions.java index 1891548..b711506 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackMethodExecutions.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackMethodExecutions.java @@ -8,6 +8,7 @@ import com.sun.jdi.ClassNotLoadedException; import com.sun.jdi.IncompatibleThreadStateException; +import com.sun.jdi.IntegerValue; import com.sun.jdi.InvalidTypeException; import com.sun.jdi.InvocationException; import com.sun.jdi.ObjectReference; @@ -17,19 +18,19 @@ import com.sun.jdi.event.MethodEntryEvent; public class CallStackMethodExecutions { - private List callStackMethodExecutions = new ArrayList(); - - public List getCallStackMethodExecutions() { + private List callStackMethodExecutions = new ArrayList<>(); + + public List getCallStackMethodExecutions() { return callStackMethodExecutions; } - + public TreeNode[] getCallStackMethodExecutionsTreeNode() { TreeNode[] roots = new TreeNode[1]; if (callStackMethodExecutions.isEmpty()) { return roots; } - MethodCaller mc = callStackMethodExecutions.get(0); - roots[0] = new TreeNode(new MethodCaller(mc.getVm(), mc.getThread(), mc.getThread())); + CallStackModel callStackModel = callStackMethodExecutions.get(0); + roots[0] = new TreeNode(new MethodCaller(callStackModel.getVm(), callStackModel.getThread())); TreeNode parentNode = roots[0]; TreeNode[] childrenNode = new TreeNode[callStackMethodExecutions.size()]; parentNode.setChildren(childrenNode); @@ -45,12 +46,15 @@ callStackMethodExecutions.clear(); } - public void updateByMethodExecution(MethodCaller me) { + public void updateByDebuggerStopMethodExecution(MethodCaller me) { if (me == null) { return; } try { - update(me.getVm(), me.getThread(), me.getObj()); + VirtualMachine vm = me.getVm(); + ThreadReference thread = me.getThread(); + int lineNo = thread.frame(0).location().lineNumber(); + update(vm, thread, me.getObj(), lineNo); } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); @@ -65,20 +69,29 @@ ThreadReference thread = alias.getThread(); try { ObjectReference me = (ObjectReference)alias.callInstanceMethod("getMethodExecution"); - update(vm, thread, me); + int lineNo = ((IntegerValue)alias.callInstanceMethod("getLineNo")).value(); + update(vm, thread, me, lineNo); } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); } } - - private void update(VirtualMachine vm, ThreadReference thread, ObjectReference me) + + private void update(VirtualMachine vm, ThreadReference thread, ObjectReference me, int topMethodCallLineNo) throws InvalidTypeException, ClassNotLoadedException, InvocationException, IncompatibleThreadStateException { callStackMethodExecutions.clear(); + ObjectReference childMe = null; + int callLineNo = topMethodCallLineNo; while (me != null) { - MethodCaller mc = new MethodCaller(vm, thread, me); - callStackMethodExecutions.add(mc); - me = (ObjectReference)mc.callInstanceMethod("getParent"); + CallStackModel callStackModel = new CallStackModel(vm, thread, me, callLineNo); + callStackMethodExecutions.add(callStackModel); + childMe = me; + me = (ObjectReference)callStackModel.callInstanceMethod("getParent"); + if (me != null) { + MethodCaller mc = new MethodCaller(vm, thread, me); + ObjectReference callStatement = (ObjectReference)mc.callInstanceMethod("getMethodInvocation", childMe); + callLineNo = ((IntegerValue)mc.setObj(callStatement).callInstanceMethod("getLineNo")).value(); + } } - } + } } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackModel.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackModel.java new file mode 100644 index 0000000..86040d9 --- /dev/null +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackModel.java @@ -0,0 +1,83 @@ +package org.ntlab.reversedebugger; + +import org.ntlab.debuggingControl.MethodCaller; + +import com.sun.jdi.ClassNotLoadedException; +import com.sun.jdi.IncompatibleThreadStateException; +import com.sun.jdi.IntegerValue; +import com.sun.jdi.InvalidTypeException; +import com.sun.jdi.InvocationException; +import com.sun.jdi.ObjectReference; +import com.sun.jdi.StringReference; +import com.sun.jdi.ThreadReference; +import com.sun.jdi.Value; +import com.sun.jdi.VirtualMachine; + +public class CallStackModel { + private ObjectReference methodExecution; +// private ObjectReference childMethodExecution; + private MethodCaller methodExecutionMc; + private int callLineNo; + +// public CallStackModel(VirtualMachine vm, ThreadReference thread, ObjectReference methodExecution, ObjectReference childMethodExecution) { +// methodExecutionMc = new MethodCaller(vm, thread, methodExecution); +// this.methodExecution = methodExecution; +// this.childMethodExecution = childMethodExecution; +// } + + public CallStackModel(VirtualMachine vm, ThreadReference thread, ObjectReference methodExecution, int callLineNo) { + methodExecutionMc = new MethodCaller(vm, thread, methodExecution); + this.methodExecution = methodExecution; + this.callLineNo = callLineNo; +// this.childMethodExecution = childMethodExecution; + } + + + public VirtualMachine getVm() { + return methodExecutionMc.getVm(); + } + + public ThreadReference getThread() { + return methodExecutionMc.getThread(); + } + + public MethodCaller getMethodCaller() { + return methodExecutionMc; + } + + public int getCallLineNo() { + return callLineNo; + } + +// public int getCallLineNo() { +// if (childMethodExecution == null) { +// return -1; +// } +// int callLineNo = -1; +// try { +// ObjectReference callStatement = (ObjectReference)methodExecutionMc.callInstanceMethod("getMethodInvocation", childMethodExecution); +// MethodCaller callStatementMc = new MethodCaller(methodExecutionMc.getVm(), methodExecutionMc.getThread(), callStatement); +// callLineNo = ((IntegerValue)callStatementMc.callInstanceMethod("getLineNo")).value(); +// } catch (InvalidTypeException | ClassNotLoadedException +// | InvocationException | IncompatibleThreadStateException e) { +// e.printStackTrace(); +// } +// return callLineNo; +// } + + public String getSignature() { + String signature = ""; + try { + signature = ((StringReference)methodExecutionMc.callInstanceMethod("getSignature")).value(); + } catch (InvalidTypeException | ClassNotLoadedException + | InvocationException | IncompatibleThreadStateException e) { + e.printStackTrace(); + } + return signature; + } + + public Value callInstanceMethod(String methodName, Value... args) + throws InvalidTypeException, ClassNotLoadedException, InvocationException, IncompatibleThreadStateException { + return methodExecutionMc.callInstanceMethod(methodName, args); + } +} diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackView.java index 0bf1e24..7772e73 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/CallStackView.java @@ -45,8 +45,8 @@ Object element = sel.getFirstElement(); if (element instanceof TreeNode) { Object value = ((TreeNode)element).getValue(); - if (value instanceof MethodCaller) { - MethodCaller methodExecution = (MethodCaller)value; + if (value instanceof CallStackModel) { + MethodCaller methodExecution = ((CallStackModel)value).getMethodCaller(); javaEditorOperator.openSrcFileOfMethodExecution(methodExecution); } } @@ -77,8 +77,7 @@ resetAction = new Action() { @Override public void run() { - callStackMethodExecutions.reset(); - viewer.refresh(); + reset(); } }; resetAction.setText("���Z�b�g"); @@ -104,9 +103,14 @@ public static void refresh() { if (callStackMethodExecutions.getCallStackMethodExecutions().isEmpty()) { - MethodCaller currentMe = SeedAliasView.getCurrentMethodExecution(); - callStackMethodExecutions.updateByMethodExecution(currentMe); + MethodCaller currentMe = SeedAliasView.getDebuggerStopMethodExecution(); + callStackMethodExecutions.updateByDebuggerStopMethodExecution(currentMe); } - viewer.setInput(callStackMethodExecutions.getCallStackMethodExecutionsTreeNode()); + viewer.setInput(callStackMethodExecutions.getCallStackMethodExecutionsTreeNode()); + } + + public static void reset() { + callStackMethodExecutions.reset(); + refresh(); } } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java index 9a48a29..cba836b 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasLabelProvider.java @@ -36,8 +36,8 @@ case 4: return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); case 5: - return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value())); - } + return getColumnTextOfOccurrenceExp(mc); + } } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); @@ -46,6 +46,34 @@ return "�e�X�g�p�e�L�X�g" + columnIndex; } + private String getColumnTextOfOccurrenceExp(MethodCaller mc) + throws InvalidTypeException, ClassNotLoadedException, InvocationException, IncompatibleThreadStateException { + int occurrenceEXP = ((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value(); + String statementType = ((StringReference)mc.callInstanceMethod("getStatementType")).value(); + switch (statementType) { + case "FieldAccess": + case "FieldUpdate": + return (occurrenceEXP == 0) ? "container" : "field"; + case "ArrayAccess": + case "ArrayUpdate": + return (occurrenceEXP == 0) ? "arrayObject" : "arrayValue"; + case "ArrayCreate": + return "return"; + case "MethodInvocation": + if (occurrenceEXP <= 0) { + return (occurrenceEXP == 0) ? "receiver" : "return"; + } + final String[] ORDER_TEXT = {"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th"}; // 0-13�ɑΉ� + final String ARG = " arg"; + if (occurrenceEXP % 100 >= ORDER_TEXT.length) { + return occurrenceEXP + ORDER_TEXT[occurrenceEXP % 10] + ARG; // ��2����14�ȏ�Ȃ�, ��1���̐����ɑΉ������� + } else if (occurrenceEXP % 100 >= 0) { + return occurrenceEXP + ORDER_TEXT[occurrenceEXP % 100] + ARG; // ��2����0�ȏ�13�ȉ��Ȃ�, ��2���̐����ɑΉ������� + } + } + return String.valueOf(occurrenceEXP); + } + @Override public Image getColumnImage(Object element, int columnIndex) { return getImage(element); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java index e2e5642..27bf149 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliasView.java @@ -33,10 +33,6 @@ // TODO Auto-generated constructor stub System.out.println("ObjectFlowView�N���X���������ꂽ��!"); } - - public static ObjectFlowAliases getObjectFlowAliases() { - return objectFlowAliases; - } @Override public void createPartControl(Composite parent) { @@ -49,7 +45,7 @@ // �e�[�u���̃J�������쐬 String[] tableColumnTexts = {"objectID", "class", "lineNo", "statementType", "statementSignature", "occurrence"}; - int[] tableColumnWidth = {150, 160, 80, 180, 300, 100}; + int[] tableColumnWidth = {150, 160, 80, 180, 300, 110}; TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; for (int i = 0; i < tableColumns.length; i++) { tableColumns[i] = new TableColumn(table, SWT.NULL); @@ -85,7 +81,7 @@ public void setFocus() { // TODO Auto-generated method stub viewer.getControl().setFocus(); - viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); +// viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); } private void createActions() { @@ -102,8 +98,7 @@ resetAction = new Action() { @Override public void run() { - objectFlowAliases.reset(); - viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); + reset(); } }; resetAction.setText("���Z�b�g"); @@ -130,4 +125,9 @@ public static void refresh() { viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); } + + public static void reset() { + objectFlowAliases.reset(); + viewer.setInput(objectFlowAliases.getObjectFlowSingleList(true)); + } } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java index b76640c..5b32580 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ObjectFlowAliases.java @@ -50,7 +50,6 @@ } public void createObjectFlow(MethodCaller seedAlias) { - System.out.println("ObjectFlowAliases#createObjectFlow(MethodCaller)���Ă΂ꂽ��!"); MethodCaller mc = new MethodCaller(seedAlias.getVm(), seedAlias.getThread()); objectFlowAliases.clear(); try { diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java index 45e4808..c3b5584 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/ReverseDebuggerPerspective.java @@ -17,11 +17,11 @@ topLeft.addView(CallStackView.ID); // �E��ɃV�[�h�G�C���A�X�̃r���[��z�u - IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.RIGHT, 0.35f, "topLeft"); + IFolderLayout topRight = layout.createFolder("topRight", IPageLayout.RIGHT, 0.5f, "topLeft"); topRight.addView(SeedAliasView.ID); // �E���ɃI�u�W�F�N�g�t���[�G�C���A�X�̃r���[��z�u - IFolderLayout bottomRight = layout.createFolder("bottomRight", IPageLayout.RIGHT, 0.35f, editorArea); + IFolderLayout bottomRight = layout.createFolder("bottomRight", IPageLayout.RIGHT, 0.5f, editorArea); bottomRight.addView(ObjectFlowAliasView.ID); } } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java index 1f197dc..7a2c73a 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasLabelProvider.java @@ -35,15 +35,44 @@ case 4: return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); case 5: - return String.format("%3d", (((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value())); + return getColumnTextOfOccurrenceExp(mc); } - } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { + } catch (InvalidTypeException | ClassNotLoadedException + | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); } } return "�e�X�g�p�e�L�X�g" + columnIndex; } + private String getColumnTextOfOccurrenceExp(MethodCaller mc) + throws InvalidTypeException, ClassNotLoadedException, InvocationException, IncompatibleThreadStateException { + int occurrenceEXP = ((IntegerValue)mc.callInstanceMethod("getOccurrenceExp")).value(); + String statementType = ((StringReference)mc.callInstanceMethod("getStatementType")).value(); + switch (statementType) { + case "FieldAccess": + case "FieldUpdate": + return (occurrenceEXP == 0) ? "container" : "field"; + case "ArrayAccess": + case "ArrayUpdate": + return (occurrenceEXP == 0) ? "arrayObject" : "arrayValue"; + case "ArrayCreate": + return "return"; + case "MethodInvocation": + if (occurrenceEXP <= 0) { + return (occurrenceEXP == 0) ? "receiver" : "return"; + } + final String[] ORDER_TEXT = {"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th"}; // 0-13�ɑΉ� + final String ARG = " arg"; + if (occurrenceEXP % 100 >= ORDER_TEXT.length) { + return occurrenceEXP + ORDER_TEXT[occurrenceEXP % 10] + ARG; // ��2����14�ȏ�Ȃ�, ��1���̐����ɑΉ������� + } else if (occurrenceEXP % 100 >= 0) { + return occurrenceEXP + ORDER_TEXT[occurrenceEXP % 100] + ARG; // ��2����0�ȏ�13�ȉ��Ȃ�, ��2���̐����ɑΉ������� + } + } + return String.valueOf(occurrenceEXP); + } + @Override public Image getColumnImage(Object element, int columnIndex) { return getImage(element); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java index b5e4437..9ce1bfa 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliasView.java @@ -29,17 +29,18 @@ private IAction refreshAction; private IAction resetAction; private static SeedAliases seedAliases = new SeedAliases(); + private static JavaEditorOperator javaEditorOperator = new JavaEditorOperator(); public static final String ID = "org.ntlab.reverseDebugger.seedAliasView"; public SeedAliasView() { // TODO Auto-generated constructor stub - System.out.println("AliasView�N���X���������ꂽ��!"); + System.out.println("SeedAliasView�N���X���������ꂽ��!"); } @Override public void createPartControl(Composite parent) { // TODO Auto-generated method stub - System.out.println("AliasView#createPartControl(Composite)���Ă΂ꂽ��!"); + System.out.println("SeedAliasView#createPartControl(Composite)���Ă΂ꂽ��!"); viewer = new TableViewer(parent, SWT.FULL_SELECTION); Table table = viewer.getTable(); table.setHeaderVisible(true); @@ -47,7 +48,7 @@ // �e�[�u���̃J�������쐬 String[] tableColumnTexts = {"objectID", "class", "lineNo", "statementType", "statementSignature", "occurrence"}; - int[] tableColumnWidth = {150, 160, 80, 180, 300, 100}; + int[] tableColumnWidth = {150, 160, 80, 180, 300, 110}; TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; for (int i = 0; i < tableColumns.length; i++) { tableColumns[i] = new TableColumn(table, SWT.NULL); @@ -57,6 +58,7 @@ viewer.setContentProvider(new ArrayContentProvider()); viewer.setLabelProvider(new SeedAliasLabelProvider()); viewer.setInput(seedAliases.getSeedAliases()); + CallStackView.refresh(); // �I�������J�����ɑΉ�����V�[�h�G�C���A�X���N�_�ɃI�u�W�F�N�g�t���[�����s�����郊�X�i�[��o�^ viewer.addSelectionChangedListener(new ISelectionChangedListener() { @@ -80,7 +82,7 @@ public void setFocus() { // TODO Auto-generated method stub viewer.getControl().setFocus(); - viewer.refresh(); +// viewer.refresh(); } private void createActions() { @@ -97,8 +99,7 @@ resetAction = new Action() { @Override public void run() { - seedAliases.reset(); - viewer.refresh(); + reset(); } }; resetAction.setText("���Z�b�g"); @@ -118,8 +119,8 @@ mgr.add(resetAction); } - public static MethodCaller getCurrentMethodExecution() { - return seedAliases.getCurrentMethodExecution(); + public static MethodCaller getDebuggerStopMethodExecution() { + return seedAliases.getDebuggerStopMethodExecution(); } public static void createSeedAliases(MethodCaller alias) { @@ -128,8 +129,17 @@ public static void refresh() { if (seedAliases.getSeedAliases().isEmpty()) { - seedAliases.initSeedAliases(); + seedAliases.initSeedAliases(); + javaEditorOperator.openSrcFileOfMethodExecution(seedAliases.getDebuggerStopMethodExecution()); + CallStackView.reset(); } - viewer.refresh(); + viewer.refresh(); + CallStackView.refresh(); + } + + private void reset() { + seedAliases.reset(); + ObjectFlowAliasView.reset(); + refresh(); } } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliases.java b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliases.java index cdd58c4..e295db3 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliases.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reversedebugger/SeedAliases.java @@ -31,7 +31,7 @@ import com.sun.jdi.VirtualMachine; public class SeedAliases { - private MethodCaller currentMethodExecution = null; + private MethodCaller debuggerStopMethodExecution = null; private List seedAliases = new ArrayList<>(); private final String TRACER = "org.ntlab.traceCollector.tracer.trace"; @@ -39,8 +39,8 @@ initSeedAliases(); } - public MethodCaller getCurrentMethodExecution() { - return currentMethodExecution; + public MethodCaller getDebuggerStopMethodExecution() { + return debuggerStopMethodExecution; } public List getSeedAliases() { @@ -98,7 +98,7 @@ // threadId�ɑΉ�����ThreadInstance���擾 ObjectReference threadInstance = (ObjectReference)mc.callStaticMethod(TRACER, "TraceJSON", "getThreadInstance", threadId); Value methodExecution = mc.setObj(threadInstance).callInstanceMethod("getCurrentMethodExecution"); - currentMethodExecution = new MethodCaller(vm, thread, (ObjectReference)methodExecution); + debuggerStopMethodExecution = new MethodCaller(vm, thread, (ObjectReference)methodExecution); findAllSeedAlias(vm, thread, methodExecution); } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace(); @@ -115,7 +115,6 @@ MethodCaller mc = new MethodCaller(vm, thread); try { Value methodExecution = alias.callInstanceMethod("getMethodExecution"); - currentMethodExecution = new MethodCaller(vm, thread); findAllSeedAlias(vm, thread, methodExecution); } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { e.printStackTrace();