diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasLabelProvider.java index 537a3ef..40f3a22 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasLabelProvider.java @@ -37,9 +37,9 @@ case 4: return ((StringReference)mc.callInstanceMethod("getStatementType")).value(); case 5: - return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); - case 6: return ((StringReference)mc.callInstanceMethod("getOccurrenceText")).value(); + case 6: + return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); } } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasView.java index abbb9ff..b00a98f 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/ObjectFlowAliasView.java @@ -47,8 +47,8 @@ table.setLinesVisible(true); // �e�[�u���̃J�������쐬 - String[] tableColumnTexts = {"objectID", "objectType", "srcFile", "lineNo", "statementType", "statementSignature", "occurrence"}; - int[] tableColumnWidth = {150, 160, 160, 80, 180, 300, 110}; + String[] tableColumnTexts = {"Object Id", "Type", "Source", "Line", "Statement Type", "Occurrence", "Statement Signature"}; + int[] tableColumnWidth = {150, 160, 160, 80, 180, 110, 300}; TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; for (int i = 0; i < tableColumns.length; i++) { tableColumns[i] = new TableColumn(table, SWT.NULL); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasLabelProvider.java b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasLabelProvider.java index 2fb90d5..0f146df 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasLabelProvider.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasLabelProvider.java @@ -34,9 +34,9 @@ case 4: return ((StringReference)mc.callInstanceMethod("getStatementType")).value(); case 5: - return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); - case 6: return ((StringReference)mc.callInstanceMethod("getOccurrenceText")).value(); + case 6: + return ((StringReference)mc.callInstanceMethod("getStatementSignature")).value(); } } catch (InvalidTypeException | ClassNotLoadedException | InvocationException | IncompatibleThreadStateException e) { diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasView.java b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasView.java index 061290c..15ff709 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasView.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliasView.java @@ -48,8 +48,8 @@ table.setLinesVisible(true); // �e�[�u���̃J�������쐬 - String[] tableColumnTexts = {"objectID", "objectType", "srcFile", "lineNo", "statementType", "statementSignature", "occurrence"}; - int[] tableColumnWidth = {150, 160, 160, 80, 180, 300, 110}; + String[] tableColumnTexts = {"Object Id", "Type", "Source", "Line", "Statement Type", "Occurrence", "Statement Signature"}; + int[] tableColumnWidth = {150, 160, 160, 80, 180, 110, 300}; TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; for (int i = 0; i < tableColumns.length; i++) { tableColumns[i] = new TableColumn(table, SWT.NULL); diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliases.java b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliases.java index bc236d0..e88f45a 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliases.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/SeedAliases.java @@ -50,7 +50,7 @@ List allThreads = vm.allThreads(); for (int i = 0; i < allThreads.size(); i++) { ThreadReference thread = allThreads.get(i); - if (thread.isSuspended()) { + if (thread.isSuspended() && !(thread.name().equals("OnlineAnalysisThread"))) { createSeedAliases(vm, thread); } } diff --git a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/analyzerProvider/Alias.java b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/analyzerProvider/Alias.java index 4100464..22ef1ca 100644 --- a/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/analyzerProvider/Alias.java +++ b/org.ntlab.reverseDebugger/src/org/ntlab/reverseDebugger/analyzerProvider/Alias.java @@ -44,6 +44,14 @@ public static final int OCCURRENCE_EXP_ARRAY = 1; public static final int OCCURRENCE_EXP_FIRST_ARG = 1; public static final int OCCURRENCE_EXP_RETURN = -1; + + private static final String FIELD_ACCESS = "Field Access"; + private static final String FIELD_UPDATE = "Field Update"; + private static final String ARRAY_ACCESS = "Array Access"; + private static final String ARRAY_UPDATE = "Array Update"; + private static final String ARRAY_CREATE = "Array Create"; + private static final String METHOD_INVOCATION = "Method Invocation"; + private static final String CREATION = "Creation"; public Alias(String objectId, TracePoint occurrencePoint, int occurrenceExp) { this.objectId = objectId; @@ -69,7 +77,7 @@ public String getMethodExecutionClassName() { MethodExecution methodExecution = occurrencePoint.getMethodExecution(); - return Trace.getDeclaringType(methodExecution.getSignature(), methodExecution.isConstructor()); + return Trace.getDeclaringType(methodExecution.getSignature(), methodExecution.isConstructor()) + ".java"; } public String getMethodSignature() { @@ -85,17 +93,22 @@ Statement statement = occurrencePoint.getStatement(); String statementType = ""; if (statement instanceof FieldAccess) { - statementType = "FieldAccess"; + statementType = FIELD_ACCESS; } else if (statement instanceof FieldUpdate) { - statementType = "FieldUpdate"; + statementType = FIELD_UPDATE; } else if (statement instanceof ArrayAccess) { - statementType = "ArrayAccess"; + statementType = ARRAY_ACCESS; } else if (statement instanceof ArrayUpdate) { - statementType = "ArrayUpdate"; + statementType = ARRAY_UPDATE; } else if (statement instanceof ArrayCreate) { - statementType = "ArrayCreate"; + statementType = ARRAY_CREATE; } else if (statement instanceof MethodInvocation) { - statementType = "MethodInvocation"; + MethodInvocation mi = (MethodInvocation)statement; + if (mi.getCalledMethodExecution().isConstructor()) { + statementType = CREATION; + } else { + statementType = METHOD_INVOCATION; + } } return statementType; } @@ -166,25 +179,26 @@ public String getOccurrenceText() { String statementType = getStatementType(); 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": + case FIELD_ACCESS: + case FIELD_UPDATE: + return (occurrenceExp == OCCURRENCE_EXP_CONTAINER) ? "Container" : "Field"; + case ARRAY_ACCESS: + case ARRAY_UPDATE: + return (occurrenceExp == OCCURRENCE_EXP_CONTAINER) ? "Array Object" : "Array Value"; + case ARRAY_CREATE: + return "New Array"; + case METHOD_INVOCATION: if (occurrenceExp <= 0) { - return (occurrenceExp == 0) ? "receiver" : "return"; + return (occurrenceExp == OCCURRENCE_EXP_RECEIVER) ? "Receiver" : "Return Value"; } 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���̐����ɑΉ������� + 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 occurrenceExp + ORDER_TEXT[occurrenceExp % 100] + " arg"; // ��2����0�ȏ�13�ȉ��Ȃ�, ��2���̐����ɑΉ������� } + case CREATION: + return "New Object"; } return String.valueOf(occurrenceExp); }