[Title] Failed api list view fixed
authorjooyoul_lee <jy.exe.lee@samsung.com>
Wed, 25 Sep 2013 06:56:15 +0000 (15:56 +0900)
committerjooyoul_lee <jy.exe.lee@samsung.com>
Wed, 25 Sep 2013 06:56:15 +0000 (15:56 +0900)
[Desc.]
[Issue]

17 files changed:
org.tizen.dynamicanalyzer.splash/plugin.properties
org.tizen.dynamicanalyzer.workbench/dynamicanalyzer.product
org.tizen.dynamicanalyzer.workbench/src/org/tizen/dynamicanalyzer/workbench/Application.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/ElfSymbolExtracter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/SWAPCallStackManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/ByteUtils.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/failed/FailedApiListView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/failed/FailedApiTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakCheckList.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakDetector.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakInfo.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopLogProcessor.java

index b295a76..f74d8aa 100644 (file)
@@ -1,4 +1,4 @@
 #Plugin name\r
-pluginName=bada Application Performance Analyzer Workbench Splash\r
+pluginName=Tizen Dynamic Analyzer splash\r
 #Provider name\r
 providerName=Samsung Electronics\r
index b1d987d..006ce65 100755 (executable)
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?pde version="3.5"?>
 
-<product name="%DynamicAnalyzer" uid="org.tizen.dynamicanalyzer.workbench.product" id="org.tizen.dynamicanalyzer.workbench.product" application="org.tizen.dynamicanalyzer.workbench.application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="false">
+<product name="%DynamicAnalyzer" uid="org.tizen.dynamicanalyzer.workbench.product" id="org.tizen.dynamicanalyzer.workbench.product" application="org.tizen.dynamicanalyzer.workbench.application" version="1.0.0.qualifier" useFeatures="true" includeLaunchers="true">
 
    <configIni use="default">
    </configIni>
 
    <launcherArgs>
+      <programArgs>-data @noDefault</programArgs>
       <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
       <vmArgsWin>-XX:MaxHeapFreeRatio=70
 -XX:MinHeapFreeRatio=40
index b58f0c4..124d543 100755 (executable)
@@ -29,6 +29,7 @@ package org.tizen.dynamicanalyzer.workbench;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.PrintStream;
+import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -36,8 +37,10 @@ import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.osgi.service.datalocation.Location;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.PlatformUI;
@@ -50,6 +53,12 @@ public class Application implements IApplication {
        @Override
        public Object start(IApplicationContext context) throws Exception {
                Display display = PlatformUI.createDisplay();
+
+               Location instanceLoc = Platform.getInstanceLocation();
+               String path = WorkbenchUtils.DYNAMIC_ANALYZER_INSTALL_PATH
+                               + File.separator;
+               instanceLoc.set(new URL("file", null, path), false);
+
                SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd_HH-mm-ss", //$NON-NLS-1$
                                Locale.KOREA);
                Date date = new Date();
index 0e2e4d1..349604e 100644 (file)
@@ -60,7 +60,6 @@ public class ElfSymbolExtracter {
                        elf = new Elf(path);
                        elf.loadSymbols();
                } catch (IOException e) {
-                       // TODO Auto-generated catch block
                        e.printStackTrace();
                        return false;
                }
index 8a0632a..fadc4fd 100644 (file)
@@ -145,7 +145,7 @@ public class DACommunicator {
 
        public static void setSelectedApp(AppInfo app) {
                selectedApp = app;
-               if (null != communicator) {
+               if (null != app && null != communicator) {
                        communicator.setSelectedApp(app);
                }
        }
@@ -842,15 +842,19 @@ public class DACommunicator {
                        System.out.println("device disconnected : "
                                        + device.getSerialNumber());
                        DeviceInfo deviceInfo = getDeviceByName(device.getSerialNumber());
+                       DeviceInfo selectedDevice = getSelectedDevice();
                        if (null != devices && !devices.isEmpty()) {
                                devices.remove(deviceInfo);
                                if (!AnalyzerManager.isRunning()) {
                                        checkDevices();
                                }
                                if (isRunning()) {
-                                       System.out.println("Disconnected while DA is running."); //$NON-NLS-1$
-                                       UIRecorderTool.getInstance().stop();
-                                       DACommunicator.setRunning(false);
+                                       if (selectedDevice.getIDevice().getSerialNumber()
+                                                       .equals(deviceInfo.getIDevice().getSerialNumber())) {
+                                               System.out.println("Disconnected while DA is running."); //$NON-NLS-1$
+                                               UIRecorderTool.getInstance().stop();
+                                               DACommunicator.setRunning(false);
+                                       }
                                }
                        }
                }
index 570664f..6a955e2 100755 (executable)
@@ -29,7 +29,6 @@ package org.tizen.dynamicanalyzer.project;
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.List;
 import java.util.Locale;
 
 import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
@@ -42,7 +41,6 @@ import org.tizen.dynamicanalyzer.sql.SqlManager;
 import org.tizen.dynamicanalyzer.swap.model.DATime;
 import org.tizen.dynamicanalyzer.swap.model.control.TargetInfo;
 import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo;
-import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
 
 public class Project {
index 308d36e..008f2ef 100755 (executable)
@@ -1080,7 +1080,6 @@ public class SqlManager {
                        if (null != dbFilePath) {
                                closeConnection();
                        }
-
                }
                return dbInfo;
        }
index 4d9e588..8eaf375 100644 (file)
@@ -220,15 +220,8 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                }
 
                ProbeCommonData log = (ProbeCommonData) inputData;
-               // String strSeq = input[LogCenterConstants.SEQUENCE_NUMBER_INDEX];
-               // String strTid = input[LogCenterConstants.THREAD_ID_INDEX];
-               // String strCallerAddr = input[LogCenterConstants.CALLER_PCADDR_INDEX];
-
-               // int seq = Integer.parseInt(strSeq);
-               // int tid = Integer.parseInt(strTid);
                int seq = log.getSeq();
                int tid = log.getTid();
-               // long callerAddr = 0;
                long callerAddr = log.getCallerPcAddr();
                // if (!strCallerAddr.isEmpty()) {
                // callerAddr = Long.parseLong(strCallerAddr);
@@ -244,8 +237,11 @@ public class SWAPCallStackManager extends BaseCallstackManager {
                }
                String strCallerAddr = Long.toString(callerAddr);
 
+               System.out.println("tid :" + tid);
                List<CallStackUnit> probeCallstack = new ArrayList<CallStackUnit>(
                                getUserCallstack(tid));
+//             List<CallStackUnit> probeCallstack = 
+//                             getUserCallstack(tid);
                int size = probeCallstack.size();
 
                CallStackData callstackData = new CallStackData(seq);
index b951fba..9f5eed2 100755 (executable)
@@ -324,12 +324,14 @@ public class Communicator30 extends BaseCommunicator {
                        // return HostResult.ERR_BIN_INFO_GET_FAIL;
                        binaryPath = CommonConstants.EMPTY;
                }
+               
 
                StringBuffer strBuf = new StringBuffer();
                strBuf.append(binaryDir).append(File.separator)
                                .append(selectedApp.getExecFileName(appInfo.getAppType()));
                binaryPath = strBuf.toString();
                binInfo.setType(binaryType);
+               binInfo.setPath(binaryPath);
 
                // host has no binary file - pull binary file from target
                // change binary file path of host
index b8d3d1e..73dfaba 100755 (executable)
@@ -139,7 +139,7 @@ public class SWAPLogParser implements Runnable {
        private void logSlicing(List<LogData> logLumb) {
                int size = logLumb.size();
                LogPackage logPack = new LogPackage();
-//             System.out.println(" log lumb size " + size);
+               // System.out.println(" log lumb size " + size);
                for (int i = 0; i < size; i++) {
                        if (null == logLumb.get(i)) {
                                continue;
@@ -309,7 +309,7 @@ public class SWAPLogParser implements Runnable {
 
                BaseView bv = (BaseView) AnalyzerUtil.getViewPart(BaseView.ID);
                bv.getMainTab().updateLog(logPack);
-       //      System.out.println("view update!!");
+               // System.out.println("view update!!");
        }
 
        private void setFuncName(ProfileData input) {
@@ -318,12 +318,14 @@ public class SWAPLogParser implements Runnable {
                                .getType() == 1) ? true : false;
                String baseAddr = Long.toString(AnalyzerManager.getProject()
                                .getBaseAddress());
-               // String path = AnalyzerManager.getProject().getBinaryPath();
+               String highAddr = Long.toString(AnalyzerManager.getProject()
+                               .getHighestAddress());
                String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
-               // String path = DACommunicator.getSelectedApp().getBinInfo().getPath();
                String pcAddr = Long.toString(input.getPcAddr());
                String functionName = SymbolManager.addr2func(path, pcAddr, isPieBuild,
                                baseAddr);
+               System.out.println("function name : " + functionName + "[ low :"
+                               + baseAddr + "   high : " + highAddr + " pcAddr : " + pcAddr + " ]");
                if (null == functionName || functionName.isEmpty()
                                || functionName.equals("_end")) { //$NON-NLS-1$
                        functionName = InformationViewLabels.CALLSTACK_TABLE_UNKNOWN_FUNCTION;
@@ -334,7 +336,6 @@ public class SWAPLogParser implements Runnable {
                                        .demanglingFunctionName(prevFunctionName);
                        ApiNameManager.getApiId(functionName);
                }
-
                input.setApiName(functionName);
        }
 
index d12c413..181879b 100755 (executable)
@@ -293,6 +293,7 @@ public class ByteUtils {
                return temp;
        }
 
+       @SuppressWarnings({ "unused", "unchecked" })
        public static byte[] getByte(final Object... objects) {
                if (null == objects) {
                        return null;
@@ -371,12 +372,12 @@ public class ByteUtils {
                int line = 0;
                for (int i = 0; i < input.length; i++, line++) {
                        String b = String.format("%2x", input[i]);
-       //              System.out.print(b + "  ");
+                       System.out.print(b + "  ");
                        if (line == 9) {
-       //                      System.out.print("      ");
+                               System.out.print("      ");
                        }
                        if (line == 19) {
-       //                      System.out.println();
+                               System.out.println();
                                line = -1;
                        }
                }
index 4b3ec49..df7d2d9 100644 (file)
@@ -63,7 +63,7 @@ public class FailedApiListView extends DAView {
                        AnalyzerConstants.SORT_TYPE_STRING,
                        AnalyzerConstants.SORT_TYPE_STRING,
                        AnalyzerConstants.SORT_TYPE_STRING,
-                       AnalyzerConstants.SORT_TYPE_GRID, AnalyzerConstants.SORT_TYPE_GRID };
+                       AnalyzerConstants.SORT_TYPE_STRING, AnalyzerConstants.SORT_TYPE_STRING };
        protected int[] sourceColumns = { LogCenterConstants.SEQUENCE_NUMBER_INDEX,
                        LogCenterConstants.TIME_INDEX, LogCenterConstants.APINAME_INDEX,
                        LogCenterConstants.INPUTPARM_INDEX,
index eb7ff16..49ac14b 100644 (file)
@@ -95,15 +95,22 @@ public class FailedApiTable extends DATableComposite {
                for (int i = 0; i < size; i++) {
                        // create text
                        List<String> text = new ArrayList<String>();
+                       List<String> data = new ArrayList<String>();
+                       
                        FailedData2 failedData = failedList.get(i);
 
                        text.add(Integer.toString(failedData.getSeq()));
 
                        String time = Formatter.toTimeFormat(failedData.getTime());
                        text.add(time);
+                       data.add(time);
                        text.add(failedData.getName());
+                       data.add(failedData.getName());
                        text.add(failedData.getArgs());
+                       data.add(failedData.getArgs());
                        text.add(Long.toString(failedData.getReturn()));
+                       data.add(Long.toString(failedData.getReturn()));
+                       
                        String errCode = ErrorCodeManager.getInatance()
                                        .getErrorCode(failedData.getErrorCode()).name();
                        if (null == errCode) {
@@ -111,6 +118,7 @@ public class FailedApiTable extends DATableComposite {
                                errCode = "undefined error number"; //$NON-NLS-1$
                        }
                        text.add(errCode);
+                       data.add(Long.toString(failedData.getErrorCode()));
 
                        String errMsg = ErrorCodeManager.getInatance().getErrorDescription(
                                        failedData.getErrorCode());
@@ -119,6 +127,7 @@ public class FailedApiTable extends DATableComposite {
                                errMsg = "undefined error number"; //$NON-NLS-1$
                        }
                        text.add(errMsg);
+                       data.add(Long.toString(failedData.getErrorCode()));
 
                        // create images
 
@@ -127,6 +136,7 @@ public class FailedApiTable extends DATableComposite {
                                        failedData.getSeq());
                        tableData.setObject(failedData);
                        tableData.setLogData(failedData.getData());
+                       tableData.getData().addAll(data);
 
                        TableInput tableInput = new TableInput();
                        tableInput.setText(text);
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakCheckList.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakCheckList.java
new file mode 100644 (file)
index 0000000..bcdeb11
--- /dev/null
@@ -0,0 +1,75 @@
+package org.tizen.dynamicanalyzer.ui.summary.leaks;
+
+import java.util.HashMap;
+
+public class LeakCheckList {
+       private static HashMap<String, LeakInfo> leakCheckList = null;
+
+       public static HashMap<String, LeakInfo> getLeakCheckList() {
+               if (null == leakCheckList) {
+                       init();
+               }
+               return leakCheckList;
+       }
+
+       private static void init() {
+               leakCheckList = new HashMap<String, LeakInfo>();
+
+               /** memory leak check list */
+               LeakInfo info = new LeakInfo("malloc", LeakDetector.API_TYPE_OPEN, true);
+               leakCheckList.put("malloc", info);
+
+               info = new LeakInfo("free", LeakDetector.API_TYPE_CLOSE, true);
+               leakCheckList.put("free", info);
+
+               info = new LeakInfo("realloc", LeakDetector.API_TYPE_REALLOC, true);
+               leakCheckList.put("realloc", info);
+
+               info = new LeakInfo("calloc", LeakDetector.API_TYPE_OPEN, true);
+               leakCheckList.put("calloc", info);
+
+               /** file leak check list */
+               info = new LeakInfo("open", LeakDetector.API_TYPE_OPEN, true);
+               leakCheckList.put("open", info);
+
+               info = new LeakInfo("close", LeakDetector.API_TYPE_CLOSE, true);
+               leakCheckList.put("close", info);
+
+               info = new LeakInfo("fopen", LeakDetector.API_TYPE_OPEN, true);
+               leakCheckList.put("fopen", info);
+
+               info = new LeakInfo("fclose", LeakDetector.API_TYPE_CLOSE, true);
+               leakCheckList.put("fclose", info);
+
+               info = new LeakInfo("File::Construct", LeakDetector.API_TYPE_OPEN,
+                               false);
+               leakCheckList.put("File::Construct", info);
+
+               info = new LeakInfo("File::~File", LeakDetector.API_TYPE_CLOSE, false);
+               leakCheckList.put("File::~File", info);
+
+               /** new - delete */
+               info = new LeakInfo("new", LeakDetector.API_TYPE_OPEN, true);
+               leakCheckList.put("new", info);
+
+               info = new LeakInfo("delete", LeakDetector.API_TYPE_CLOSE, true);
+               leakCheckList.put("delete", info);
+
+               /** etc.. */
+               info = new LeakInfo("app_get_name", LeakDetector.API_TYPE_OPEN, false);
+               leakCheckList.put("app_get_name", info);
+
+               info = new LeakInfo("app_get_data_directory",
+                               LeakDetector.API_TYPE_OPEN, false);
+               leakCheckList.put("app_get_data_directory", info);
+
+               info = new LeakInfo("app_get_package", LeakDetector.API_TYPE_OPEN,
+                               false);
+               leakCheckList.put("app_get_package", info);
+
+               info = new LeakInfo("app_get_version", LeakDetector.API_TYPE_OPEN,
+                               false);
+               leakCheckList.put("app_get_version", info);
+
+       }
+}
index 3085d54..a96a577 100644 (file)
@@ -32,7 +32,6 @@ import java.util.List;
 
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.model.Check;
-import org.tizen.dynamicanalyzer.model.LeakCheckList;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LeakData2;
 import org.tizen.dynamicanalyzer.swap.model.probe2.LogData;
 import org.tizen.dynamicanalyzer.swap.model.probe2.ProbeCommonData;
@@ -50,16 +49,16 @@ public class LeakDetector {
        private int leakSeq = 0;
 
        public LeakDetector() {
-               LeakCheckList leakCheckList = AnalyzerManager.getLeakCheckList();
-               if (leakCheckList != null) {
-                       leakCheckHash = new HashMap<String, Check>();
-
-                       List<Check> checks = leakCheckList.getChecks();
-                       int size = checks.size();
-                       for (int i = 0; i < size; i++) {
-                               leakCheckHash.put(checks.get(i).getName(), checks.get(i));
-                       }
-               }
+               // LeakCheckList leakCheckList = AnalyzerManager.getLeakCheckList();
+               // if (leakCheckList != null) {
+               // leakCheckHash = new HashMap<String, Check>();
+               //
+               // List<Check> checks = leakCheckList.getChecks();
+               // int size = checks.size();
+               // for (int i = 0; i < size; i++) {
+               // leakCheckHash.put(checks.get(i).getName(), checks.get(i));
+               // }
+               // }
        }
 
        public List<LeakData2> getLeakDataList() {
@@ -82,23 +81,23 @@ public class LeakDetector {
                return childHash;
        }
 
-       public HashMap<String, Check> getLeakCheckHash() {
-               if (null == leakCheckHash) {
-                       leakCheckHash = new HashMap<String, Check>();
-                       LeakCheckList leakCheckList = AnalyzerManager.getLeakCheckList();
-                       if (null != leakCheckList) {
-                               List<Check> checks = leakCheckList.getChecks();
-                               if (null != checks) {
-                                       int size = checks.size();
-                                       for (int i = 0; i < size; i++) {
-                                               leakCheckHash.put(checks.get(i).getName(),
-                                                               checks.get(i));
-                                       }
-                               }
-                       }
-               }
-               return leakCheckHash;
-       }
+       // public HashMap<String, Check> getLeakCheckHash() {
+       // if (null == leakCheckHash) {
+       // leakCheckHash = new HashMap<String, Check>();
+       // LeakCheckList leakCheckList = AnalyzerManager.getLeakCheckList();
+       // if (null != leakCheckList) {
+       // List<Check> checks = leakCheckList.getChecks();
+       // if (null != checks) {
+       // int size = checks.size();
+       // for (int i = 0; i < size; i++) {
+       // leakCheckHash.put(checks.get(i).getName(),
+       // checks.get(i));
+       // }
+       // }
+       // }
+       // }
+       // return leakCheckHash;
+       // }
 
        public void runLeakDectect(LogData logData) {
                ProbeCommonData log = (ProbeCommonData) logData;
@@ -109,22 +108,29 @@ public class LeakDetector {
                }
 
                // step 1 : check "open" or "close"
-               Check chk; // 0: open , 1: close
-               if (null == getLeakCheckHash().get(apiName)) {
+               // Check chk; // 0: open , 1: close
+               // if (null == getLeakCheckHash().get(apiName)) {
+               // return;
+               // } else {
+               // chk = getLeakCheckHash().get(apiName);
+               // }
+
+               LeakInfo chk = null;
+               if (null == LeakCheckList.getLeakCheckList().get(apiName)) {
                        return;
                } else {
-                       chk = getLeakCheckHash().get(apiName);
+                       chk = LeakCheckList.getLeakCheckList().get(apiName);
                }
 
                HashMap<Integer, LeakData2> leaks = getLeakHash();
-               if (chk.getType() == API_TYPE_OPEN) {
+               if (chk.getApiType() == API_TYPE_OPEN) {
                        if (chk.isCheckUserCall()) {
                                checkUserFuncLeakData(logData, chk);
                        } else {
                                LeakData2 newLeak = new LeakData2(logData, this);
                                leaks.put(logData.getKey(), newLeak);
                        }
-               } else if (chk.getType() == API_TYPE_CLOSE) {
+               } else if (chk.getApiType() == API_TYPE_CLOSE) {
                        int key = log.getKey();
                        LeakData2 freeData = getChildHash().get(key);
                        if (null != freeData) {
@@ -144,12 +150,12 @@ public class LeakDetector {
                                leaks.remove(key);
                        }
 
-               } else if (chk.getType() == API_TYPE_REALLOC) {
+               } else if (chk.getApiType() == API_TYPE_REALLOC) {
                        // System.out.println("realloc!! " + input);
 
                        // free index = input param 1st
-//                     String inputParam = input[LogCenterConstants.INPUTPARM_INDEX];
-                       String inputParam = ((ProbeCommonData)log).getArgs();
+                       // String inputParam = input[LogCenterConstants.INPUTPARM_INDEX];
+                       String inputParam = ((ProbeCommonData) log).getArgs();
                        String[] splitInputParam = inputParam.split("\\,"); //$NON-NLS-1$
                        int rmKey = Integer.parseInt(splitInputParam[0]);
                        leaks.remove(rmKey);
@@ -158,15 +164,15 @@ public class LeakDetector {
                        if (chk.isCheckUserCall()) {
                                checkUserFuncLeakData(log, chk);
                        } else {
-//                             String key = input[chk.getKeyIndex()];
-//                             leaks.put(key, new LeakData(key, input, this));
+                               // String key = input[chk.getKeyIndex()];
+                               // leaks.put(key, new LeakData(key, input, this));
                                int key = log.getKey();
                                leaks.put(key, new LeakData2(log, this));
                        }
                }
        }
 
-       private void checkUserFuncLeakData(LogData log, Check chk) {
+       private void checkUserFuncLeakData(LogData log, LeakInfo chk) {
                HashMap<Integer, CallStackData> cdMap = AnalyzerManager
                                .getCallstackManager().getCallStackDataBySeqMap();
                // HashMap<Long, String> apiMap = LogSpliter.getCallStackApiByAddrMap();
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakInfo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/leaks/LeakInfo.java
new file mode 100644 (file)
index 0000000..7eeb071
--- /dev/null
@@ -0,0 +1,26 @@
+package org.tizen.dynamicanalyzer.ui.summary.leaks;
+
+public class LeakInfo {
+       private String apiName = null;
+       private int apiType = -1;
+       private boolean checkUserCall = false;
+
+       public LeakInfo(String name, int type, boolean usercall) {
+               apiName = name;
+               apiType = type;
+               checkUserCall = usercall;
+       }
+
+       public String getApiName() {
+               return apiName;
+       }
+
+       public int getApiType() {
+               return apiType;
+       }
+
+       public boolean isCheckUserCall() {
+               return checkUserCall;
+       }
+
+}
index e32c170..4d78b94 100644 (file)
@@ -91,36 +91,33 @@ public class StopLogProcessor implements Runnable {
                } else {
                        LogParser.stopLogParser();
                }
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
-               LogInserter.stopInsertLogThread();
-               percent += 10;
-               StopProcessManager.getInstance().setValue(percent);
                FileChartManager.getInstance().stopUpdateLogThread();
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
                ThreadChartManager.getInstance().stopUpdateLogThread();
 
                FunctionUsageProfiler.stopProfiler();
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
                UIDataManager.getInstance().stopUpdateLogThread();
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
                UpdateViewTimer.stop();
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
                LogInserter.stopInsertLogThread();
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
                UIRecorderTool.getInstance().stop();
-               percent += 10;
+               percent += 5;
                StopProcessManager.getInstance().setValue(percent);
 
                /* save Project */