[Title] Callstack view excpetion fixed
authorjooyoul_lee <jy.exe.lee@samsung.com>
Tue, 12 Nov 2013 05:36:24 +0000 (14:36 +0900)
committerjooyoul_lee <jy.exe.lee@samsung.com>
Tue, 12 Nov 2013 05:36:24 +0000 (14:36 +0900)
[Desc.]
[Issue]

org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/listeners/TableTooltipListener.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/LogData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProbeCommonData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/ProfileData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/failed/FailedApiTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/configuration/BinarySettingsPage.java

index 468bf0f..077dd31 100644 (file)
@@ -336,6 +336,7 @@ public class AnalyzerConstants {
        public final static String CALLSTACK_KEY_PID = "pid";//$NON-NLS-1$\r
        public final static String CALLSTACK_KEY_ADDR = "address";//$NON-NLS-1$\r
        public final static String CALLSTACK_KEY_TIME = "time";//$NON-NLS-1$\r
+       public final static String CALLSTACK_KEY_LIBNAME = "libName";//$NON-NLS-1$\r
        \r
        public final static int SASH_WIDTH = 4;\r
 }\r
index 2c63c60..45533c3 100644 (file)
@@ -383,18 +383,22 @@ public class TableTooltipListener implements Listener {
                        addr = (Long) item.getData(AnalyzerConstants.CALLSTACK_KEY_ADDR);\r
                        pid = (Integer) item.getData(AnalyzerConstants.CALLSTACK_KEY_PID);\r
                        time = (Long) item.getData(AnalyzerConstants.CALLSTACK_KEY_TIME);\r
+                       libName = (String) item\r
+                                       .getData(AnalyzerConstants.CALLSTACK_KEY_LIBNAME);\r
                        break;\r
                case AnalyzerConstants.TYPE_TABLE_FAILED:\r
                        List<String> failedData = tableData.getData();\r
                        addr = Long.parseLong(failedData.get(8));\r
                        pid = Integer.parseInt(failedData.get(7));\r
                        time = Long.parseLong(failedData.get(1));\r
+                       libName = failedData.get(9);\r
                        break;\r
                case AnalyzerConstants.TYPE_TABLE_LEAK:\r
                        List<String> leakData = tableData.getData();\r
                        addr = Long.parseLong(leakData.get(9));\r
                        pid = Integer.parseInt(leakData.get(1));\r
                        time = Long.parseLong(leakData.get(4));\r
+                       libName = leakData.get(7);\r
                        break;\r
                case AnalyzerConstants.TYPE_TABLE_WARNING:\r
                        data = tableData.getLogData();\r
@@ -402,15 +406,18 @@ public class TableTooltipListener implements Listener {
                        addr = pData.getCallerPcAddr();\r
                        pid = data.getPid();\r
                        time = data.getTime();\r
+                       libName = pData.getLibName();\r
                        break;\r
                case AnalyzerConstants.TYPE_TABLE_CALLTRACE:\r
                        data = tableData.getLogData();\r
                        if (data instanceof UserFunctionData) {\r
                                addr = ((UserFunctionData) data).getCallerPcAddr();\r
+                               libName = ((UserFunctionData) data).getLibName();\r
                        } else if (data instanceof ProfileData) {\r
                                // addr = ((ProfileData) data).getPcAddr();\r
                                // config\r
                                addr = ((ProfileData) data).getCallerPcAddr();\r
+                               libName = ((ProfileData) data).getLibName();\r
                        }\r
                        pid = data.getPid();\r
                        time = data.getTime();\r
@@ -421,9 +428,10 @@ public class TableTooltipListener implements Listener {
                        addr = wData.getCallerPcAddr();\r
                        pid = data.getPid();\r
                        time = data.getTime();\r
+                       wData.getLibName();\r
                }\r
 \r
-               libName = getLibPath(item);\r
+               // libName = getLibPath(item);\r
 \r
                ProcessInfoPackage processInfoPkg = AnalyzerManager.getProject()\r
                                .getProcessInfo(pid);\r
@@ -496,10 +504,11 @@ public class TableTooltipListener implements Listener {
                switch (tableData.getType()) {\r
                case AnalyzerConstants.TYPE_TABLE_CALLSTACK:\r
                        // addr = (Long) tableData.getObject();\r
+                       libName = item.getText(2);\r
                        break;\r
                case AnalyzerConstants.TYPE_TABLE_FAILED:\r
                        List<String> failedData = tableData.getData();\r
-                       // libName = failedData.get(6));\r
+                       libName = failedData.get(9);\r
                        break;\r
                case AnalyzerConstants.TYPE_TABLE_LEAK:\r
                        List<String> leakData = tableData.getData();\r
index 66db1d8..7a1e7f0 100755 (executable)
@@ -529,12 +529,6 @@ public class MessageParser {
                        if (AnalyzerManager.isProcessInfoArrived() && id > 0x0100
                                        && id < 0x0200) {
                                log = LogDataFactory.createInstance(data);
-
-                               if (log.getId() == DataChannelConstants.MSG_PROBE_MEMORY) {
-                                       ProbeCommonData pdata = (ProbeCommonData) log;
-                                       System.out.println("memory log : " + pdata.getApiName()
-                                                       + " internal type : " + pdata.getInternalCall());
-                               }
                                if (null != log) {
                                        buffer.add(log);
                                        messageCount++;
index db78ead..0dbb526 100644 (file)
@@ -47,6 +47,8 @@ public abstract class LogData {
        int seq = -1;
        long time = 0;
 
+       protected String libName = null;
+
        public LogData() {
        }
 
@@ -133,4 +135,11 @@ public abstract class LogData {
 
        public abstract int getPid();
 
+       public String getLibName() {
+               return libName;
+       }
+
+       public void setLibName(String libName) {
+               this.libName = libName;
+       }
 }
index 48a7bb4..fadd45f 100644 (file)
@@ -56,8 +56,6 @@ public class ProbeCommonData extends LogData {
        protected int reserved1 = 0;
        protected int reserved2 = 0;
 
-       protected String libName = null;
-
        private String apiName = null;
 
        public ProbeCommonData() {
index c8d685f..7195645 100644 (file)
@@ -58,8 +58,6 @@ public class ProfileData extends LogData {
        long ret = 0;
        String apiName = null;
 
-       String libName = null;
-
        int buildType = -1;
        String binaryPath = null;
 
@@ -94,7 +92,7 @@ public class ProfileData extends LogData {
                        cpuNum = ByteUtils.toInt(data, index);
                        index += INT_SIZE;
                        ArgsInfo info = LogDataUtils.parseArgs(data, index);
-                       args = info.getArgs();
+                       args = info.getProfileArgs();
                        break;
                case MSG_FUNCTION_EXIT:
                        logCount++;
index 68635b6..155b292 100644 (file)
@@ -99,8 +99,34 @@ public class CallstackTable extends DATableComposite {
                        }
                        DATableDataFormat tableData = (DATableDataFormat) items[0]
                                        .getData();
-                       LogData logData = tableData.getLogData();
-                       int seqNum = logData.getSeq();
+
+                       int seqNum = -1;
+                       // long addr = -1;
+                       int pid = -1;
+                       long time = -1;
+                       String libName = null;
+                       if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
+                               List<String> failedData = tableData.getData();
+                               seqNum = Integer.parseInt(failedData.get(0));
+                               // addr = Long.parseLong(failedData.get(8));
+                               pid = Integer.parseInt(failedData.get(7));
+                               time = Long.parseLong(failedData.get(1));
+                               libName = failedData.get(9);
+                       } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
+                               List<String> leakData = tableData.getData();
+                               seqNum = Integer.parseInt(leakData.get(2));
+                               // addr = Long.parseLong(leakData.get(9));
+                               pid = Integer.parseInt(leakData.get(1));
+                               time = Long.parseLong(leakData.get(4));
+                               libName = leakData.get(7);
+                       } else {
+                               LogData logData = tableData.getLogData();
+                               seqNum = logData.getSeq();
+                               pid = logData.getPid();
+                               time = logData.getTime();
+                               libName = logData.getLibName();
+                       }
+
                        HashMap<Integer, CallStackData> cdMap = AnalyzerManager
                                        .getCallstackManager().getCallStackDataBySeqMap();
                        HashMap<Long, CallStackUnit> addrMap = AnalyzerManager
@@ -118,7 +144,7 @@ public class CallstackTable extends DATableComposite {
                        for (int i = 0; i < size; i++) {
                                CallStackUnit api = addrMap.get(addrs.get(i));
 
-                               String addr = Formatter.toHexString(addrs.get(i).toString());
+                               String hexAddr = Formatter.toHexString(addrs.get(i).toString());
                                String path = api.getPath();
                                // if path has "da_probe.so" then reject
                                if (path.contains(AnalyzerConstants.PROBE_LIB_TIZEN)
@@ -137,12 +163,15 @@ public class CallstackTable extends DATableComposite {
                                                        .setType(AnalyzerConstants.TYPE_TABLE_CALLSTACK);
                                        callstackTableData.setObject(address);
                                        gridItem.setData(callstackTableData);
-                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_ADDR, address);
-                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_PID, logData.getPid());
-                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_TIME, logData.getTime());
+                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_ADDR,
+                                                       address);
+                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_PID, pid);
+                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_TIME, time);
+                                       gridItem.setData(AnalyzerConstants.CALLSTACK_KEY_LIBNAME,
+                                                       libName);
                                }
 
-                               String addrInput = (addrs.get(i) == 0) ? "" : addr; //$NON-NLS-1$
+                               String addrInput = (addrs.get(i) == 0) ? "" : hexAddr; //$NON-NLS-1$
                                gridItem.setText(1, addrInput);
 
                                String fName = api.getFunctionName();
index e079ec5..9b7a648 100644 (file)
 
 package org.tizen.dynamicanalyzer.ui.info.callstack;
 
+import java.util.List;
+
 import org.eclipse.nebula.widgets.grid.Grid;
 import org.eclipse.nebula.widgets.grid.GridItem;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.model.DAView;
@@ -111,14 +114,35 @@ public class CallstackView extends DAView {
                        }
                        if (table.getSelectionCount() > 0) {
                                GridItem[] selection = table.getSelection();
-                               LogData startData = ((DATableDataFormat) selection[0].getData())
-                                               .getLogData();
-                               long startTime = startData.getTime();
+                               long startTime = -1;
+                               DATableDataFormat tableData = (DATableDataFormat) selection[0]
+                                               .getData();
+                               if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
+                                       List<String> failedData = tableData.getData();
+                                       startTime = Long.parseLong(failedData.get(1));
+                               } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
+                                       List<String> leakData = tableData.getData();
+                                       startTime = Long.parseLong(leakData.get(4));
+                               } else {
+                                       LogData startData = ((DATableDataFormat) selection[0]
+                                                       .getData()).getLogData();
+                                       startTime = startData.getTime();
+                               }
                                long endTime = startTime;
                                if (null != selection[selection.length - 1].getData()) {
-                                       LogData endData = ((DATableDataFormat) selection[selection.length - 1]
-                                                       .getData()).getLogData();
-                                       endTime = endData.getTime();
+                                       DATableDataFormat lastTableData = (DATableDataFormat) selection[0]
+                                                       .getData();
+                                       if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
+                                               List<String> failedData = tableData.getData();
+                                               endTime = Long.parseLong(failedData.get(1));
+                                       } else if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
+                                               List<String> leakData = tableData.getData();
+                                               endTime = Long.parseLong(leakData.get(4));
+                                       } else {
+                                               LogData endData = ((DATableDataFormat) selection[selection.length - 1]
+                                                               .getData()).getLogData();
+                                               endTime = endData.getTime();
+                                       }
                                }
 
                                DASelectionData data = new DASelectionData(observingViews[i],
index 2054513..713e6e7 100644 (file)
@@ -141,6 +141,7 @@ public class FailedApiTable extends DATableComposite {
                        data.add(Integer.toString(failedData.getPid()));
                        
                        data.add(Long.toString(failedData.getCallerPc())); // 8
+                       data.add(failedData.getLibName()); //9
                        
                        // create images
 
index 211ea70..ab3137a 100644 (file)
@@ -279,7 +279,7 @@ public class BinarySettingsPage extends DAPageComposite {
                currentRadioButton.setLayoutData(data);
                currentRadioButton.setForeground(ColorResources.BLACK);
                currentRadioButton.setBackground(ColorResources.DIALOG_BG_UPPER);
-               currentRadioButton.setText("Current Libarry");
+               currentRadioButton.setText("Current Library");
                currentRadioButton.addSelectionListener(currentRadioButtonListener);
                radioGroup.addChild(currentRadioButton);
 
@@ -292,7 +292,7 @@ public class BinarySettingsPage extends DAPageComposite {
                addRadioButton.setLayoutData(data);
                addRadioButton.setForeground(ColorResources.BLACK);
                addRadioButton.setBackground(ColorResources.DIALOG_BG_UPPER);
-               addRadioButton.setText("Add Libarry");
+               addRadioButton.setText("Add Library");
                addRadioButton.addSelectionListener(addRadioButtonListener);
                radioGroup.addChild(addRadioButton);