[Title] fix file and thread column data size
authorjooyoul_lee <jy.exe.lee@samsung.com>
Sat, 24 Aug 2013 02:11:41 +0000 (11:11 +0900)
committerjooyoul_lee <jy.exe.lee@samsung.com>
Sat, 24 Aug 2013 02:11:41 +0000 (11:11 +0900)
[Desc.]
[Issue]

15 files changed:
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/ElfSymbolExtracter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/AppInfo.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/DataFactory.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/FileData.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/LogDataFactory.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/timeline/calltrace/CallTraceTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProcessManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopProcessManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java

index b918d81..2e81c9d 100755 (executable)
@@ -439,11 +439,11 @@ public class AnalyzerManager {
                return false;
        }
 
-       public static void setAppInfoArrived(boolean arrived) {
+       public static void setProcessInfoArrived(boolean arrived) {
                appInfoArrived = arrived;
        }
 
-       public static boolean isAppInfoArrived() {
+       public static boolean isProcessInfoArrived() {
                return appInfoArrived;
        }
 
index d2a749a..2d1ede1 100644 (file)
@@ -45,6 +45,10 @@ public class ElfSymbolExtracter {
        }
 
        public boolean makeSymbol(String path) {
+               if (null == path || path.isEmpty()) {
+                       return false;
+               }
+
                this.sourcePath = path;
                if (null != symbolMap) {
                        symbolMap.clear();
@@ -103,6 +107,11 @@ public class ElfSymbolExtracter {
                        symbolMap.clear();
                        symbolMap = null;
                }
+
+               if (null != addrSymbolPairs) {
+                       addrSymbolPairs.clear();
+                       addrSymbolPairs = null;
+               }
        }
 
        public List<AddrSymbolPair> getAddrSymbolPairs() {
index 7a7ab61..9e9cf58 100644 (file)
@@ -126,9 +126,9 @@ public class MessageProcess {
 
                        switch (messageIndex) {
                        case AnalyzerConstants.MSG_APP_INFO: /* app info : 1 */
-                               if (!AnalyzerManager.isAppInfoArrived()) {
+                               if (!AnalyzerManager.isProcessInfoArrived()) {
                                        processAppInfo(messages[MSG_PAYLOAD_INDEX]);
-                                       AnalyzerManager.setAppInfoArrived(true);
+                                       AnalyzerManager.setProcessInfoArrived(true);
                                }
                                break;
                        case AnalyzerConstants.MSG_USER_PROFILING_SAMPLE: /* sample : 3 */
index edc7f74..224e005 100644 (file)
@@ -93,6 +93,11 @@ public class AppInfo {
        }
 
        public List<AddrSymbolPair> getSymbols() {
+               if (null == binInfo) {
+                       return null;
+               }
+               symbolExtractor.clear();
+               symbolExtractor.makeSymbol(binInfo.getPath());
                return symbolExtractor.getAddrSymbolPairs();
        }
 }
index d9b0e97..ab931cd 100755 (executable)
@@ -201,11 +201,11 @@ public class Communicator30 extends BaseCommunicator {
                }
 
                // TODO: app inst , replay info added!!
-//             byte[] rear = ByteUtils.getByte(appInfo.getByteValue(),
-//                             rt.getByteValue(), getUserSpaceInst().getByteValue(),
-//                             replayEvent);
                byte[] rear = ByteUtils.getByte(appInfo.getByteValue(),
-                               rt.getByteValue(), 0,0);
+                               rt.getByteValue(), getUserSpaceInst().getByteValue(),
+                               replayEvent);
+//             byte[] rear = ByteUtils.getByte(appInfo.getByteValue(),
+//                             rt.getByteValue(), 0,0);
                int length = rear.length;
 
                byte[] ret = ByteUtils.getByte(AnalyzerConstants.MSG_START_SWAP,
@@ -262,7 +262,7 @@ public class Communicator30 extends BaseCommunicator {
                List<AddrSymbolPair> symbols = selectedApp.getSymbols();
                List<FunctionInst> functionInstList = appInst.getFunctionInstList();
 
-               int size = symbols.size();
+               int size = (symbols == null)? 0 : symbols.size();
                appInst.setFunctionCount(size);
                for (int i = 0; i < size; i++) {
                        AddrSymbolPair addrSymbol = symbols.get(i);
index 2aa8544..7874305 100755 (executable)
@@ -159,8 +159,8 @@ public class MessageParser {
                index += LONG_SIZE;
                highAddr = ByteUtils.toLong(payload, index);
                index += LONG_SIZE;
-               appType = ByteUtils.toInt(payload, index);
-               index += INT_SIZE;
+//             appType = ByteUtils.toInt(payload, index);
+//             index += INT_SIZE;
                binaryType = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
                binaryPath = ByteUtils.getString(payload, index);
@@ -191,12 +191,12 @@ public class MessageParser {
                // pInfo.setStartTime(startTime);
                pInfo.setLowestAddress(lowAddr);
                pInfo.setHighestAddress(highAddr);
-               pInfo.setAppType(appType);
+//             pInfo.setAppType(appType);
                pInfo.setBinaryType(binaryType);
                pInfo.setBinaryPath(binaryPath);
                pInfo.setDepLibCount(dependantLibCount);
 
-               AnalyzerManager.setAppInfoArrived(true);
+               AnalyzerManager.setProcessInfoArrived(true);
        }
 
        private String getImageName(String fullPath) {
index 3220f37..f86ef5f 100755 (executable)
@@ -41,6 +41,7 @@ import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
 import org.tizen.dynamicanalyzer.swap.model.LogContainer;
 import org.tizen.dynamicanalyzer.swap.model.data.ApiNameManager;
 import org.tizen.dynamicanalyzer.swap.model.data.BasicDataMessage;
+import org.tizen.dynamicanalyzer.swap.model.probe2.ContextSwitchData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
@@ -184,6 +185,9 @@ public class SWAPLogParser implements Runnable {
                                }
                                pushLog(log, msg, logPack);
                        } else if (log instanceof ProfileData) {
+                               if (!AnalyzerManager.isProcessInfoArrived()) {
+                                       continue;
+                               }
                                ProfileData pData = (ProfileData) log;
                                String apiName = pData.getApiName();
                                if (null == apiName || apiName.isEmpty()
@@ -191,7 +195,7 @@ public class SWAPLogParser implements Runnable {
                                        setFuncName(pData);
                                }
 
-                               if (LogParser.isDrapCallTraceLog()) {
+                               if (!isDrapCallTraceLog()) {
                                        apiName = pData.getApiName();
                                        if (!apiName.equals(OSP_MAIN)) {
                                                continue;
@@ -203,13 +207,14 @@ public class SWAPLogParser implements Runnable {
                                                pData)) {
                                        continue;
                                }
-                               // pushLog(log, msg, logPack);
+                               pushLog(log, msg, logPack);
                                /* user callstack create by entry and exit */
                                AnalyzerManager.getCallstackManager().makeUserCallstack(
                                                pData,
                                                FunctionUsageProfiler.getInstance()
                                                                .getProfileDataMaker());
-                       } else if (log instanceof ReplayData) {
+                       } else if (log instanceof ReplayData
+                                       || log instanceof ContextSwitchData) {
                                pushLog(log, msg, logPack);
                        } else {
                                if (log instanceof ScreenShotData) {
@@ -326,6 +331,7 @@ public class SWAPLogParser implements Runnable {
                String baseAddr = Long.toString(AnalyzerManager.getProject()
                                .getBaseAddress());
                String path = AnalyzerManager.getProject().getBinaryPath();
+               // String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
                String pcAddr = Long.toString(input.getPcAddr());
                String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild,
                                baseAddr);
@@ -348,5 +354,4 @@ public class SWAPLogParser implements Runnable {
                logPack.setLogs(logData.getId(), logData);
                logPack.setMessages(msg.getId(), msg);
        }
-
 }
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/probe2/ContextSwitchData.java
new file mode 100644 (file)
index 0000000..0338452
--- /dev/null
@@ -0,0 +1,48 @@
+package org.tizen.dynamicanalyzer.swap.model.probe2;
+
+import org.tizen.dynamicanalyzer.swap.model.data.BasicDataMessage;
+
+public class ContextSwitchData extends LogData {
+
+       long pcAddr = 0;
+       int pid = 0;
+       int tid = 0;
+       int cpuNum = 0;
+
+       public ContextSwitchData(BasicDataMessage data) {
+               super(data);
+               // TODO Auto-generated constructor stub
+       }
+
+       public long getPcAddr() {
+               return pcAddr;
+       }
+
+       public void setPcAddr(long pcAddr) {
+               this.pcAddr = pcAddr;
+       }
+
+       public int getPid() {
+               return pid;
+       }
+
+       public void setPid(int pid) {
+               this.pid = pid;
+       }
+
+       public int getTid() {
+               return tid;
+       }
+
+       public void setTid(int tid) {
+               this.tid = tid;
+       }
+
+       public int getCpuNum() {
+               return cpuNum;
+       }
+
+       public void setCpuNum(int cpuNum) {
+               this.cpuNum = cpuNum;
+       }
+}
index 5a7183a..ac33e76 100644 (file)
@@ -86,6 +86,10 @@ public class DataFactory {
                case MSG_RECORD:
                        createRecordData(data, paylaod);
                        break;
+               case MSG_CONTEXT_SWITCH_ENTRY:
+               case MSG_CONTEXT_SWITCH_EXIT:
+                       createContextSwitchData(data, paylaod);
+                       break;
                case LogCenterConstants.LOG_USER_FUNCTION:
                        createUserFunctionData(data, paylaod);
                        break;
@@ -223,8 +227,6 @@ public class DataFactory {
                index += LONG_SIZE;
                long fdValue = ByteUtils.toLong(payload, index);
                index += LONG_SIZE;
-               int fdType = ByteUtils.toInt(payload, index);
-               index += INT_SIZE;
                int fdApiType = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
                long fileSize = ByteUtils.toLong(payload, index);
@@ -233,7 +235,6 @@ public class DataFactory {
 
                data.setSize(size);
                data.setFdValue(fdValue);
-               data.setFdType(fdType);
                data.setFdApiType(fdApiType);
                data.setFileSize(fileSize);
                data.setFilePath(filePath);
@@ -276,6 +277,7 @@ public class DataFactory {
                index += length;
 
                long formPointer = ByteUtils.toLong(payload, index);
+               index += LONG_SIZE;
 
                length = LogDataUtils.getStringLength(index, payload);
                temp = new byte[length];
@@ -302,14 +304,10 @@ public class DataFactory {
                createCommonData(log, payload);
                ThreadData data = (ThreadData) log;
 
-//             long pThreadId = ByteUtils.toLong(payload, index);
-//             index += LONG_SIZE;
-//             long ospThreadId = ByteUtils.toLong(payload, index);
-//             index += LONG_SIZE;
-               int pThreadId = ByteUtils.toInt(payload, index);
-               index += INT_SIZE;
-               int ospThreadId = ByteUtils.toInt(payload, index);
-               index += INT_SIZE;
+               long pThreadId = ByteUtils.toLong(payload, index);
+               index += LONG_SIZE;
+               long ospThreadId = ByteUtils.toLong(payload, index);
+               index += LONG_SIZE;
                int threadType = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
                int apiType = ByteUtils.toInt(payload, index);
@@ -366,16 +364,15 @@ public class DataFactory {
                int coreCount = DACommunicator.getSelectedDevice().getTargetInfo()
                                .getCpuCount();
 
-               
                float appCpuUsage = ByteUtils.toFloat(payload, index);
                index += FLOAT_SIZE;
-               
+
                String cpuFrequency = parseCpu(index, payload);
                index += (FLOAT_SIZE * coreCount);
-               
+
                String cpuLoad = parseCpu(index, payload);
                index += (FLOAT_SIZE * coreCount);
-               
+
                int threadCount = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
 
@@ -387,7 +384,7 @@ public class DataFactory {
 
                String processLoad = parseLoad(index, payload);
                index += (processCount * (INT_SIZE + FLOAT_SIZE));
-               
+
                int virtualMemory = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
 
@@ -411,7 +408,7 @@ public class DataFactory {
 
                int totalUsedDrive = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
-               
+
                int diskReadSize = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
 
@@ -420,13 +417,13 @@ public class DataFactory {
 
                int diskSectorsWritten = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
-               
+
                int networkSendSize = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
 
                int networkReceiveSize = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
-               
+
                int wifi = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
 
@@ -465,8 +462,7 @@ public class DataFactory {
 
                int dnet = ByteUtils.toInt(payload, index);
                index += INT_SIZE;
-               
-               
+
                int energy = ByteUtils.toInt(payload, index);
 
                data.setEnergy(energy);
@@ -521,10 +517,15 @@ public class DataFactory {
                        long callerPcAddr = ByteUtils.toLong(payload, index);
                        index += LONG_SIZE;
 
-                       int probeType = ByteUtils.toInt(payload, index);
-                       index += INT_SIZE;
-                       int probeSubType = ByteUtils.toInt(payload, index);
-                       index += INT_SIZE;
+                       byte[] temp = new byte[4];
+                       System.arraycopy(payload, index, temp, 0, 2);
+                       int probeType = ByteUtils.toInt(temp, 0);
+                       index += 2;
+
+                       System.arraycopy(payload, index, temp, 0, 2);
+                       int probeSubType = ByteUtils.toInt(temp, 0);
+                       index += 2;
+
                        pid = ByteUtils.toInt(payload, index);
                        index += INT_SIZE;
                        tid = ByteUtils.toInt(payload, index);
@@ -595,6 +596,29 @@ public class DataFactory {
                }
        }
 
+       private static void createContextSwitchData(LogData log, byte[] payload) {
+               ContextSwitchData data = (ContextSwitchData) log;
+
+               long pcAddr = 0; // profiling common
+               int pid = 0; // profiling common
+               int tid = 0; // profiling common
+               int cpuNum = 0; // profiling common
+
+               pcAddr = ByteUtils.toLong(payload, index);
+               index += LONG_SIZE;
+               pid = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               tid = ByteUtils.toInt(payload, index);
+               index += INT_SIZE;
+               cpuNum = ByteUtils.toInt(payload, index);
+
+               data.setPcAddr(pcAddr);
+               data.setPid(pid);
+               data.setTid(tid);
+               data.setCpuNum(cpuNum);
+
+       }
+
        private static void createRecordData(LogData log, byte[] payload) {
                ReplayData data = (ReplayData) log;
 
index 43e1485..1a52220 100644 (file)
@@ -6,7 +6,6 @@ public class FileData extends ProbeCommonData {
 
        long size = 0;
        long fdValue = 0;
-       int fdType = 0; // TODO: short
        int fdApiType = 0; // TODO: short
        long fileSize = 0;
        String filePath = null;
@@ -27,14 +26,6 @@ public class FileData extends ProbeCommonData {
                this.fdValue = fdValue;
        }
 
-       public int getFdType() {
-               return fdType;
-       }
-
-       public void setFdType(int fdType) {
-               this.fdType = fdType;
-       }
-
        public int getFdApiType() {
                return fdApiType;
        }
index 603c8d2..dbf7d0d 100644 (file)
@@ -103,6 +103,8 @@ public class LogDataFactory {
                        output = new UserFunctionData(input);
                        break;
                case MSG_DATA_SAMPLE:
+               case MSG_FUNCTION_ENTRY:
+               case MSG_FUNCTION_EXIT:
                        // profiling sample log
                        output = new ProfileData(input);
                        ((ProfileData) output).setCallstack(input.getCallstack());
@@ -115,6 +117,10 @@ public class LogDataFactory {
                        // replay log
                        output = new ReplayData(input);
                        break;
+               case MSG_CONTEXT_SWITCH_ENTRY:
+               case MSG_CONTEXT_SWITCH_EXIT:
+                       output = new ContextSwitchData(input);
+                       break;
                default:
                        return null;
                }
index 3e2386d..fc9cfae 100644 (file)
@@ -38,6 +38,7 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.common.DASelectionData;
 import org.tizen.dynamicanalyzer.model.TableInput;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
+import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.UserFunctionData;
 import org.tizen.dynamicanalyzer.ui.common.UICommonConstants;
 import org.tizen.dynamicanalyzer.ui.range.RangeDataManager;
@@ -89,19 +90,31 @@ public class CallTraceTable extends DATableComposite {
                List<TableInput> input = new ArrayList<TableInput>();
                int size = userLog.size();
                for (int i = 0; i < size; i++) {
-                       // create text
-                       UserFunctionData data = (UserFunctionData) userLog.get(i);
+                       LogData logData = userLog.get(i);
                        List<String> text = new ArrayList<String>();
-                       String time = Formatter.toTimeFormat(data.getTime());
-                       text.add(time);
-                       text.add(Integer.toString(data.getTid()));
-                       text.add(data.getApiName());
-
+                       if (logData instanceof UserFunctionData) {
+                               // create text
+                               UserFunctionData data = (UserFunctionData) logData;
+                               String time = Formatter.toTimeFormat(data.getTime());
+                               text.add(time);
+                               text.add(Integer.toString(data.getTid()));
+                               text.add(data.getApiName());
+                       } else if (logData instanceof ProfileData) {
+                               ProfileData data = (ProfileData) logData;
+                               String time = Formatter.toTimeFormat(data.getTime());
+                               text.add(time);
+                               text.add(Integer.toString(data.getTid()));
+                               text.add(data.getApiName());
+                       } else {
+                               System.out.println("wrong log data in calltrace view");
+                               continue;
+                       }
                        // create images
 
                        // create DATableDataFormat
-                       DATableDataFormat tableData = new DATableDataFormat(data.getSeq());
-                       tableData.setLogData(data);
+                       DATableDataFormat tableData = new DATableDataFormat(
+                                       logData.getSeq());
+                       tableData.setLogData(logData);
 
                        TableInput tableInput = new TableInput();
                        tableInput.setText(text);
@@ -109,7 +122,7 @@ public class CallTraceTable extends DATableComposite {
                        input.add(tableInput);
 
                        if (RangeDataManager.getInstance().isBeingAnalyzed()) {
-                               long logTime = data.getTime();
+                               long logTime = logData.getTime();
                                long analysisStartTime = RangeDataManager.getInstance()
                                                .getAnalysisStartTime();
                                long analysisEndTime = RangeDataManager.getInstance()
@@ -176,7 +189,7 @@ public class CallTraceTable extends DATableComposite {
                        // }
                }
        }
-       
+
        public void setSelectionByTime(long startTime, long endTime) {
                GridItem[] items = table.getItems();
                int size = items.length;
index c1380d8..e503ee9 100644 (file)
@@ -53,12 +53,12 @@ public class StartProcessManager implements Runnable {
        @Override
        public void run() {
                count = 10;
-               System.out.println("appinfo : " + AnalyzerManager.isAppInfoArrived()
+               System.out.println("appinfo : " + AnalyzerManager.isProcessInfoArrived()
                                + "is exit :" + AnalyzerManager.isExit());
                while (!AnalyzerManager.isExit()) {
 
                        if (AnalyzerManager.isRunning()
-                                       && AnalyzerManager.isAppInfoArrived()) {
+                                       && AnalyzerManager.isProcessInfoArrived()) {
                                break;
                        }
                        count += 2;
index f2f17e8..d22099f 100644 (file)
@@ -31,7 +31,6 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
-import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider;
 import org.tizen.dynamicanalyzer.shortcut.ShortCutManager;
 import org.tizen.dynamicanalyzer.ui.summary.SummaryPage;
 import org.tizen.dynamicanalyzer.ui.widgets.ProgressDialog;
index 1cd6a3e..3791572 100755 (executable)
@@ -403,7 +403,6 @@ public class ToolbarArea {
                                        @Override
                                        public void handleClickEvent(DACustomButton button) {
                                                // TODO : use for test code...
-
 //                                             String path = "/home/casval/work/testApp/DATizenTestApp/Dynamic Analyzer/DATizenTestApp.exe";
 //                                             ElfSymbolExtractManager.getInstance().makeSymbol(path);
 //                                             Long[] result = ElfSymbolExtractManager.getInstance()