From: Lee Date: Wed, 21 Nov 2012 01:34:49 +0000 (+0900) Subject: [Title] Profiling thread added / open trace progress bar added X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cfb57e08dd754255703ef5e70736cdab0326a810;p=sdk%2Ftools%2Fdynamic-analyzer.git [Title] Profiling thread added / open trace progress bar added [Desc.] profiler implements runnablem, open trace progress added [Issue] redmin # 7484 --- diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java index 2c7b6b0..3b183a8 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerConstants.java @@ -83,7 +83,8 @@ public class AnalyzerConstants { public static final String SEND_MESSAGE_THREAD = "Send message thread"; //$NON-NLS-1$ public static final String START_STOP_THREAD = "Start stop thread"; //$NON-NLS-1$ public static final String FILE_CHART_MANAGER_THREAD = "File Chart Manager thread"; //$NON-NLS-1$ - public static final String USER_INTERFACE_PAGE_MANAGER_THREAD = "User Interface Page Manager thread"; //$NON-NLS-1$ + public static final String FUNCTION_USAGE_PROFILING_THREAD = "Function usage profiling thread"; //$NON-NLS-1$ + public static final String USER_INTERFACE_PAGE_MANAGER_THREAD = "User Interface Page Managerthread"; //$NON-NLS-1$ /* log parsing token and callstack parsing token, etc... */ public static final String CALLSTACK_START = "callstack_start"; //$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java index a7823f6..4941660 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java @@ -69,7 +69,6 @@ public class AnalyzerManager { private static LeakDetector leakDetector = null; private static FailedChecker failedChecker = null; private static FailedChecker calledChecker = null; - private static FunctionUsageProfiler functionUsageProfiler = null; private static boolean appInfoArrived = false; private static boolean sampleThread = false; @@ -191,10 +190,10 @@ public class AnalyzerManager { leakDetector = null; failedChecker = null; calledChecker = null; - functionUsageProfiler = null; sampleThread = false; UserFunctionManager.getInstance().clear(); - + FunctionUsageProfiler.clear(); + FunctionUsageProfiler.stopProfiler(); startBinaryAddr = null; endBinaryAddr = null; appInfoArrived = false; @@ -389,12 +388,12 @@ public class AnalyzerManager { return calledChecker; } - public static FunctionUsageProfiler getFunctionUserProfiler() { - if (null == functionUsageProfiler) { - functionUsageProfiler = new FunctionUsageProfiler(); - } - return functionUsageProfiler; - } + // public static FunctionUsageProfiler getFunctionUserProfiler() { + // if (null == functionUsageProfiler) { + // functionUsageProfiler = new FunctionUsageProfiler(); + // } + // return functionUsageProfiler; + // } public static boolean recordStart() { AnalyzerUtil.executeCommand(ClearHandler.ID); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java index d2e1ef6..400e394 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java @@ -47,7 +47,7 @@ import org.tizen.dynamicanalyzer.common.AnalyzerShellCommands; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.project.AppDesktopInfo; -import org.tizen.dynamicanalyzer.ui.info.range.StateManager; +import org.tizen.dynamicanalyzer.ui.info.range.StopProcessManager; import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; import org.tizen.dynamicanalyzer.uirecorder.UIRecorderTool; @@ -756,7 +756,7 @@ public class DACommunicator { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager + StopProcessManager .getInstance() .stopProcessStart( AnalyzerLabels.STOP_PROCESS_DLG_DEVICE_DISCONNECTED); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java index cb0dd8e..365027d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java @@ -37,7 +37,6 @@ import org.tizen.dynamicanalyzer.logparser.LogParser; import org.tizen.dynamicanalyzer.ui.toolbar.OpenTraceInputReader; import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager; import org.tizen.dynamicanalyzer.utils.UpdateViewTimer; public class ExitHandler extends AbstractHandler { @@ -49,12 +48,11 @@ public class ExitHandler extends AbstractHandler { AnalyzerManager.setExit(true); ToolbarArea.getInstance().stopTimer(); UpdateViewTimer.stop(); - OpenTraceInputReader.stopOpenTraceThread(); + OpenTraceInputReader.stopOpenTraceInputReader(); LogInserter.stopInsertLogThread(); LogParser.stopLogParser(); StopLogProcessor.stopStopLogProcessThread(); IDECommunicator.stopIDEcommunicatorThread(); - UIDataManager.getInstance().stopUpdateLogThread(); if (DACommunicator.isDaemonAlive()) { DACommunicator.killDaemon(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceCompleteHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceCompleteHandler.java index f2b7bb9..2f9f89c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceCompleteHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceCompleteHandler.java @@ -34,32 +34,37 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.AnalyzerPaths; import org.tizen.dynamicanalyzer.ui.page.DAPageComposite; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.utils.UpdateViewTimer; - public class OpenTraceCompleteHandler extends AbstractHandler { - public static String ID = OpenTraceCompleteHandler.class.getName(); + public static String ID = OpenTraceCompleteHandler.class.getName(); - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { - Display.getDefault().syncExec(new Runnable() { - @Override - public void run() { - DAPageComposite page = AnalyzerManager.getCurrentPage(); - page.updatePage(); - if (AnalyzerManager.getProject().getSavePath() - .contains(AnalyzerPaths.TEMP_FOLDER_PATH)) { - ToolbarArea.getInstance().setToolbarEnablement(true); - } else { - ToolbarArea.getInstance().setSaveButtonEnable(false); - } - } - }); + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + DAPageComposite page = AnalyzerManager.getCurrentPage(); + page.updatePage(); + if (AnalyzerManager.getProject().getSavePath() + .contains(AnalyzerPaths.TEMP_FOLDER_PATH)) { + ToolbarArea.getInstance().setToolbarEnablement(true); + } else { + ToolbarArea.getInstance().setSaveButtonEnable(false); + } + } + }); - UpdateViewTimer.stop(); - System.out.println("open trace complete!!"); //$NON-NLS-1$ - return null; - } + System.out.println("open trace complete handler "); + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + DAPageComposite page = AnalyzerManager.getCurrentPage(); + page.updatePage(); + } + }); + System.out.println("open trace complete!!"); //$NON-NLS-1$ + return null; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java index 5dcd713..4437564 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/OpenTraceHandler.java @@ -35,9 +35,11 @@ import java.util.List; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; +import org.eclipse.swt.widgets.Display; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; +import org.tizen.dynamicanalyzer.logparser.OpenTraceProgressManager; import org.tizen.dynamicanalyzer.model.ImageInfo; import org.tizen.dynamicanalyzer.model.LogCenter; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; @@ -55,18 +57,17 @@ import org.tizen.dynamicanalyzer.ui.summary.leaks.LeakDetector; import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingChildData; import org.tizen.dynamicanalyzer.ui.summary.profiling.ProfilingData; -import org.tizen.dynamicanalyzer.ui.toolbar.OpenTraceInputReader; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; -import org.tizen.dynamicanalyzer.utils.UpdateViewTimer; public class OpenTraceHandler extends AbstractHandler { public static final String ID = OpenTraceHandler.class.getName(); + Project p = null; @Override public Object execute(ExecutionEvent event) throws ExecutionException { - Project p = AnalyzerManager.getProject(); + p = AnalyzerManager.getProject(); ResultSet rs = SqlManager.selectAllFromProject(p); if (null == rs) { return null; @@ -82,10 +83,18 @@ public class OpenTraceHandler extends AbstractHandler { } if (pInfo.isEmpty()) { + // TODO: message box + // TODO: valid check System.out.println("invalid save file"); //$NON-NLS-1$ return null; } - + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + OpenTraceProgressManager.getInstance().openTracePrgressStart( + "Loading xml files.."); + } + }); int size = pInfo.size(); List logCenterNames = new ArrayList(); for (int i = 0; i < size; i++) { @@ -125,42 +134,78 @@ public class OpenTraceHandler extends AbstractHandler { } p.initLogCenters(logCenterNames); - loadAppInfo(p); - loadCallStackData(p); - loadCallStackApis(p); - loadProfilingData(); - loadProfilingChildData(); - loadLeakData(p); - loadFailedData(); - loadImageSet(p); - p.closeConnection(); - - ToolbarArea.getInstance().setTime(p.getLastTime()); - ToolbarArea.getInstance().setAppComboText(p.getAppName()); - ToolbarArea.getInstance().setRepalyButtonEnable(true); - if (AnalyzerManager.getProject().getBinaryPath().isEmpty()) { - ToolbarArea.getInstance().setSourceViewEnable(false); - ToolbarArea.getInstance().setSourceViewTooltip( - AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING); - } else { - ToolbarArea.getInstance().setSourceViewEnable(true); - ToolbarArea.getInstance().setSourceViewTooltip( - AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE); - } - /* add each part action.. close... open...etc... */ + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + int percent = OpenTraceProgressManager.getInstance() + .getPercent(); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading appInfo..", percent += 20); + + loadAppInfo(p); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading Callstack data..", percent += 5); + + loadCallStackData(p); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading Callstack APIs..", percent += 5); + + loadCallStackApis(p); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading Profiling data..", percent += 5); + + loadProfilingData(); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Making Profiling tree..", percent += 5); + + loadProfilingChildData(); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading Leak data..", percent += 5); + + loadLeakData(p); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading Failed data..", percent += 5); + + loadFailedData(); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading Images..", percent += 5); + + loadImageSet(p); + OpenTraceProgressManager.getInstance().setProgressPercent( + "Toolbar setting...", percent += 5); + p.closeConnection(); + + ToolbarArea.getInstance().setTime(p.getLastTime()); + ToolbarArea.getInstance().setAppComboText(p.getAppName()); + ToolbarArea.getInstance().setRepalyButtonEnable(true); + if (AnalyzerManager.getProject().getBinaryPath().isEmpty()) { + ToolbarArea.getInstance().setSourceViewEnable(false); + ToolbarArea.getInstance().setSourceViewTooltip( + AnalyzerLabels.MESSAGE_PROCESS_PG_WARNING); + } else { + ToolbarArea.getInstance().setSourceViewEnable(true); + ToolbarArea.getInstance().setSourceViewTooltip( + AnalyzerLabels.MESSAGE_PROCESS_VIEW_SOURCE); + } - /* resource log view action start */ - List logCenters = AnalyzerManager.getLogCenters(); - size = logCenters.size(); - for (int i = 0; i < size; i++) { - LogCenter center = logCenters.get(i); - int dataSize = SqlManager.selectCount(center); - center.setDataSize(dataSize); - } + OpenTraceProgressManager.getInstance().setProgressPercent( + "Loading data..", percent += 3); + + /* add each part action.. close... open...etc... */ - /* Timeline + file chart */ - UpdateViewTimer.start(); - OpenTraceInputReader.startOpenTraceThread(); + /* resource log view action start */ + List logCenters = AnalyzerManager.getLogCenters(); + int size = logCenters.size(); + for (int i = 0; i < size; i++) { + LogCenter center = logCenters.get(i); + int dataSize = SqlManager.selectCount(center); + center.setDataSize(dataSize); + } + /* Timeline + file chart */ + OpenTraceProgressManager.getInstance().runThreads(); + OpenTraceProgressManager.getInstance().openTraceComplete(); + } + }); return null; } @@ -335,8 +380,9 @@ public class OpenTraceHandler extends AbstractHandler { DBTableManager.TABLE_INDEX_PROFILING_DATA); String tableName = profilingData.getTableName(); ResultSet rs = SqlManager.selectAllFromTable(tableName); - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); + // FunctionUsageProfiler profiler = AnalyzerManager + // .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); if (null == rs || profiler == null) { return; } @@ -350,10 +396,8 @@ public class OpenTraceHandler extends AbstractHandler { data.add(rs.getString(i)); } // possibility of extensions - network, efl, db, etc... - ProfilingData fupData = new ProfilingData( - data); - String seq = data - .get(ProfilingData.SEQUENCE_INDEX); + ProfilingData fupData = new ProfilingData(data); + String seq = data.get(ProfilingData.SEQUENCE_INDEX); profiler.getProfilingDataMap().put(seq, fupData); String symbol = data.get(ProfilingData.KEY_INDEX); profiler.getSymbolSeqHash().put(symbol, seq); @@ -376,8 +420,9 @@ public class OpenTraceHandler extends AbstractHandler { .getTableInfo(DBTableManager.TABLE_INDEX_PROFILING_CHILD_DATA); String tableName = profilingChildData.getTableName(); ResultSet rs = SqlManager.selectAllFromTable(tableName); - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); + // FunctionUsageProfiler profiler = AnalyzerManager + // .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); if (null == rs || profiler == null) { return; } @@ -401,8 +446,8 @@ public class OpenTraceHandler extends AbstractHandler { for (int ii = 0; ii < splitSeqs.length; ii++) { childData.add(new String(splitSeqs[ii])); } - ProfilingData parent = profiler - .getProfilingDataMap().get(data.get(0)); + ProfilingData parent = profiler.getProfilingDataMap().get( + data.get(0)); ProfilingChildData child = parent.getChildData(); child.getChildren().addAll(childData); profiler.getChildListMap().put(data.get(0), child); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java index e7d9bc5..61df28c 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java @@ -37,7 +37,7 @@ import org.tizen.dynamicanalyzer.model.ImageInfo; import org.tizen.dynamicanalyzer.model.LogCenter; import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackManager; -import org.tizen.dynamicanalyzer.ui.info.range.StateManager; +import org.tizen.dynamicanalyzer.ui.info.range.StopProcessManager; import org.tizen.dynamicanalyzer.ui.page.BaseView; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; @@ -89,6 +89,13 @@ public class LogParser implements Runnable { } } + public static boolean isLogParsingEnd() { + if (null != logParser && logParser.isAlive()) { + return false; + } + return true; + } + /*** log parsing thread ***/ @Override public void run() { @@ -113,7 +120,7 @@ public class LogParser implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().logQueueObserverThreadEnd(); + StopProcessManager.getInstance().logQueueObserverThreadEnd(); } }); ToolbarArea.getInstance().stopTimer(); @@ -136,8 +143,7 @@ public class LogParser implements Runnable { slicedLog = log[0].split(AnalyzerConstants.DATA_PARSING_TOKEN); logId = slicedLog[LogCenterConstants.ID_INDEX]; int id = Integer.parseInt(logId); - if (LogCenterConstants.LOG_DEVICE != id){ -// if (LogCenterConstants.LOG_DEVICE != id && LogCenterConstants.LOG_UI_SCENE != id) { + if (LogCenterConstants.LOG_DEVICE != id) { if (null == pid) { pid = slicedLog[LogCenterConstants.PROCESS_ID_INDEX]; } else { @@ -147,9 +153,6 @@ public class LogParser implements Runnable { } } } -// if (LogCenterConstants.LOG_UI_SCENE == id) { -// System.out.println("break point"); -// } String currentTime = null; try { @@ -249,6 +252,9 @@ public class LogParser implements Runnable { // e.printStackTrace(); } + if (null == functionName || functionName.isEmpty()) { + System.out.println("function name is empty"); + } input[LogCenterConstants.APINAME_INDEX] = functionName; } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java index 66abb62..423c437 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/MessageProcess.java @@ -42,7 +42,7 @@ import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider; -import org.tizen.dynamicanalyzer.ui.info.range.StateManager; +import org.tizen.dynamicanalyzer.ui.info.range.StopProcessManager; import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineMaster; import org.tizen.dynamicanalyzer.ui.toolbar.RecordStartStopThread; @@ -310,7 +310,7 @@ public class MessageProcess { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager + StopProcessManager .getInstance() .stopProcessStart( AnalyzerLabels.STOP_PROCESS_DLG_DEVICE_DISCONNECTED); // socket @@ -328,7 +328,7 @@ public class MessageProcess { @Override public void run() { if (!AnalyzerManager.isExit()) { - StateManager + StopProcessManager .getInstance() .stopProcessStart( AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA); @@ -352,9 +352,10 @@ public class MessageProcess { } public void processUserProfiling(String input) { - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); - - profiler.makeFunctionUsageProfileData(input); +// FunctionUsageProfiler profiler = AnalyzerManager +// .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); + profiler.pushSample(input); +// profiler.makeFunctionUsageProfileData(input); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/OpenTraceProgressManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/OpenTraceProgressManager.java new file mode 100644 index 0000000..6ffa777 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/OpenTraceProgressManager.java @@ -0,0 +1,134 @@ +package org.tizen.dynamicanalyzer.logparser; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Shell; +import org.tizen.dynamicanalyzer.common.AnalyzerConstants; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; +import org.tizen.dynamicanalyzer.handlers.ClearHandler; +import org.tizen.dynamicanalyzer.handlers.OpenTraceCompleteHandler; +import org.tizen.dynamicanalyzer.handlers.OpenTraceHandler; +import org.tizen.dynamicanalyzer.project.Project; +import org.tizen.dynamicanalyzer.ui.file.chart.FileChartManager; +import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage; +import org.tizen.dynamicanalyzer.ui.toolbar.OpenTraceInputReader; +import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager; +import org.tizen.dynamicanalyzer.ui.widgets.ProgressDialog; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; + +public class OpenTraceProgressManager implements Runnable { + public static final int INIT = 0; + public static final int OPEN_TRACE_PROCESS_START = 1; + public static final int OPEN_TRACE_PROCESS_END = 2; + private int state = INIT; + private ProgressDialog dialog = null; + private String savePath = null; + + private int percent = 0; + + private static OpenTraceProgressManager instance = new OpenTraceProgressManager(); + private Thread openTraceThread = null; + + private OpenTraceProgressManager() { + + } + + public void startOpenTraceThread() { + if (null == openTraceThread || !openTraceThread.isAlive()) { + openTraceThread = new Thread(null, new OpenTraceProgressManager(), + AnalyzerConstants.OPEN_TRACE_THREAD); + openTraceThread.start(); + } + } + + public void stopOpenTraceThread() { + if (null != openTraceThread && openTraceThread.isAlive()) { + openTraceThread.interrupt(); + } + } + + public int getPercent() { + return percent; + } + + public void setSavePath(String path) { + savePath = path; + } + + public String getSavePath() { + return savePath; + } + + public static OpenTraceProgressManager getInstance() { + return instance; + } + + public void openTracePrgressStart(String EndMessage) { + if (state == OPEN_TRACE_PROCESS_START) { + return; + } + state = OPEN_TRACE_PROCESS_START; + Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell(); + dialog = new ProgressDialog(shell, SWT.APPLICATION_MODAL); + if (null != dialog) { + dialog.open(); + dialog.setProcessMessage(EndMessage); + } + } + + public void setProgressPercent(String message, int percent) { + + if (null != dialog) { + this.percent = percent; + dialog.setProcessSelection(percent); + dialog.setProcessMessage(message); + } + } + + public void openTraceComplete() { + if (null != dialog) { + waitingThreads(); + dialog.setProcessSelection(100); + AnalyzerUtil.changePage(TimelinePage.ID); + dialog.close(); + state = OPEN_TRACE_PROCESS_END; + AnalyzerUtil.executeCommand(OpenTraceCompleteHandler.ID); + percent = 0; + } + } + + public int getState() { + return state; + } + + public void runThreads() { + FileChartManager.getInstance().startUpdateLogThread(); + OpenTraceInputReader.startOpenTraceInputReader(); + UIDataManager.getInstance().startUpdateLogThread(); + } + + private void waitingThreads() { + while (true) { + try { + if (!FileChartManager.getInstance().isThreadAlive() + && !OpenTraceInputReader.isThreadAlive()) { + break; + } else { + Thread.sleep(AnalyzerConstants.LOG_CHECK_INTERVAL); + } + } catch (InterruptedException e) { + /** thread stop by interrupt */ + break; + } + } + } + + @Override + public void run() { + AnalyzerUtil.executeCommand(ClearHandler.ID); + Project project = new Project(); + AnalyzerManager.setProjectNoRegist(project); + project.setSavePath(getInstance().getSavePath()); + + AnalyzerUtil.executeCommand(OpenTraceHandler.ID); + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java index 4e8c29c..3ac1225 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/project/Project.java @@ -44,6 +44,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.model.BaseLogCenter; import org.tizen.dynamicanalyzer.model.LogCenter; import org.tizen.dynamicanalyzer.sql.SqlManager; +import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; import org.tizen.sdblib.IDevice; public class Project { @@ -306,8 +307,14 @@ public class Project { } public boolean isPieBuild() { - if ("1".equals(appInfo.get(AnalyzerConstants.APP_INFO_PIE_BUILD))) { //$NON-NLS-1$ - return true; + try { + if ("1".equals(appInfo.get(AnalyzerConstants.APP_INFO_PIE_BUILD))) { //$NON-NLS-1$ + return true; + } + } catch (NullPointerException e) { + System.out.println(appInfo.get(AnalyzerConstants.APP_INFO_PIE_BUILD)); + e.printStackTrace(); + return false; } return false; } @@ -328,10 +335,13 @@ public class Project { } public void setTotalProfilingSampleCount(int count) { - AnalyzerManager.getFunctionUserProfiler().setTotalSampleCount(count); + // AnalyzerManager.getFunctionUserProfiler().setTotalSampleCount(count); + FunctionUsageProfiler.getInstance().setTotalSampleCount(count); } public int getTotalProfilingSampleCount() { - return AnalyzerManager.getFunctionUserProfiler().getTotalSampleCount(); + return FunctionUsageProfiler.getInstance().getTotalSampleCount(); + // return + // AnalyzerManager.getFunctionUserProfiler().getTotalSampleCount(); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java index cd73663..5772824 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -840,8 +840,9 @@ public class SqlManager { unlockDB(); return; } - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); +// FunctionUsageProfiler profiler = AnalyzerManager +// .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); HashMap profilingDataMap = profiler .getProfilingDataMap(); List pDataList = new ArrayList(); @@ -886,8 +887,9 @@ public class SqlManager { unlockDB(); return; } - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); +// FunctionUsageProfiler profiler = AnalyzerManager +// .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); HashMap profilingDataMap = profiler .getChildListMap(); List pDataList = new ArrayList(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java index ae5c724..e63450d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/FileApiListView.java @@ -164,7 +164,6 @@ public class FileApiListView extends DAView { int output = selection - size; output = (output < 0) ? 0 : output; - System.out.println(output + " size " + size); return output; } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/chart/FileChartManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/chart/FileChartManager.java index 33fd680..35c5e55 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/chart/FileChartManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/file/chart/FileChartManager.java @@ -36,7 +36,9 @@ import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.communicator.ResourceCommunicator; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.logparser.LogListQueue; +import org.tizen.dynamicanalyzer.logparser.LogParser; import org.tizen.dynamicanalyzer.resources.ColorResources; +import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider; import org.tizen.dynamicanalyzer.ui.file.FileChartData; import org.tizen.dynamicanalyzer.ui.file.FileChartItemData; import org.tizen.dynamicanalyzer.ui.summary.failed.FailedData; @@ -65,7 +67,6 @@ public class FileChartManager implements Runnable { private final int TYPE_OPEN = 1; private final int TYPE_CLOSE = 2; - private final long ONE_MINUTE = 60000000; private int openApiCount = 0; private int closeApiCount = 0; @@ -110,18 +111,28 @@ public class FileChartManager implements Runnable { } } + public boolean isThreadAlive() { + if (null == updateLogThread || !updateLogThread.isAlive()) { + return false; + } + return true; + } + /*** make file data thread ***/ @Override public void run() { LogListQueue logListQueue = getInstance().getLogListQueue(); while (true) { - try { if (!logListQueue.isEmpty()) { List> logs = logListQueue.getFirst(); getInstance().makeData(logs); - } else { + } else if (!LogParser.isLogParsingEnd() + || (AnalyzerUtil.getRecordState() + .equals(RecordStateSourceProvider.RECORD_RECORDING))) { Thread.sleep(AnalyzerConstants.LOG_CHECK_INTERVAL); + } else { + break; } } catch (InterruptedException e) { /** thread stop by interrupt */ @@ -131,7 +142,6 @@ public class FileChartManager implements Runnable { /* log for debug */ System.out.println("file manager thread end!!"); //$NON-NLS-1$ - } public static Color getFileOpenStartColor() { @@ -235,7 +245,7 @@ public class FileChartManager implements Runnable { .get(LogCenterConstants.RESOURCE_FILE_PATH_INDEX); String fd = input.get(LogCenterConstants.RESOURCE_FDVALUE_INDEX); String err = input.get(LogCenterConstants.ERROR_INDEX); - int errno = Integer.parseInt(err); + long errno = Long.parseLong(err); String name = input.get(LogCenterConstants.APINAME_INDEX); // error check @@ -501,18 +511,6 @@ public class FileChartManager implements Runnable { } } - if (!file.isRepeatCehcked() && file.getData().size() > 3) { - if (!WarningDataManager.getInstance().isChecked(file.getKey(), - WarningCase.REPEATEDLY_OPEN_CLOSE.getType())) { - WarningData wData = new WarningData( - LogCenterConstants.LOG_RESOURCE, - WarningCase.REPEATEDLY_OPEN_CLOSE.getType(), input, - file.getKey()); - WarningDataManager.getInstance().getWarningData() - .add(wData); - file.setRepeatCheck(); - } - } } else if (type == TYPE_OPEN) { if (!file.isClosed()) { if (!WarningDataManager.getInstance().isChecked(file.getKey(), @@ -527,7 +525,6 @@ public class FileChartManager implements Runnable { } } - long usedTime = 0; long closedTime = 0; if (null != file.getLastData()) { closedTime = file.getLastData().getCloseTime(); @@ -537,27 +534,6 @@ public class FileChartManager implements Runnable { closedTime = ToolbarArea.getInstance().getTime(); } - long lastTime = 0; - if (null != file.getLastData()) { - lastTime = file.getLastData().getLastTime(); - } - if (lastTime < 0) { - long openTime = file.getLastData().getOpenTime(); - usedTime = closedTime - openTime; - } else { - usedTime = closedTime - lastTime; - } - - if (usedTime > ONE_MINUTE) { - if (!WarningDataManager.getInstance().isChecked(file.getKey(), - WarningCase.LONG_TIME_USED.getType())) { - WarningData wData = new WarningData( - LogCenterConstants.LOG_RESOURCE, - WarningCase.LONG_TIME_USED.getType(), input, - file.getKey()); - WarningDataManager.getInstance().getWarningData().add(wData); - } - } } private FileChartItemData createNewFileData(String path) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java index ed82c7f..6c59f21 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackManager.java @@ -117,8 +117,9 @@ public class CallStackManager { } // insert call count - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); +// FunctionUsageProfiler profiler = AnalyzerManager +// .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); profiler.makeFupDataForCallTrace(selfCallstackUnit, input); List userCallstack = getUserCallstack(tid); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/range/StateManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/range/StopProcessManager.java similarity index 86% rename from org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/range/StateManager.java rename to org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/range/StopProcessManager.java index 73fd27c..437002d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/range/StateManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/range/StopProcessManager.java @@ -28,23 +28,23 @@ package org.tizen.dynamicanalyzer.ui.info.range; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Shell; import org.tizen.dynamicanalyzer.ui.summary.SummaryPage; -import org.tizen.dynamicanalyzer.ui.widgets.StopProgressDialog; +import org.tizen.dynamicanalyzer.ui.widgets.ProgressDialog; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; -public class StateManager { +public class StopProcessManager { public static final int INIT = 0; public static final int STOP_PROCESS_START = 1; public static final int STOP_PROCESS_END = 2; private int state = INIT; - private StopProgressDialog dialog = null; + private ProgressDialog dialog = null; - private static StateManager instance = new StateManager(); + private static StopProcessManager instance = new StopProcessManager(); - private StateManager() { + private StopProcessManager() { } - public static StateManager getInstance() { + public static StopProcessManager getInstance() { return instance; } @@ -54,9 +54,9 @@ public class StateManager { } state = STOP_PROCESS_START; Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell(); - dialog = new StopProgressDialog(shell, SWT.APPLICATION_MODAL); - dialog.open(); + dialog = new ProgressDialog(shell, SWT.APPLICATION_MODAL); if (null != dialog) { + dialog.open(); dialog.setProcessMessage(EndMessage); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java index f77a39c..3576280 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java @@ -36,12 +36,14 @@ import org.tizen.dynamicanalyzer.common.AnalyzerPaths; import org.tizen.dynamicanalyzer.common.CommonConstants; import org.tizen.dynamicanalyzer.logparser.LogCenterConstants; import org.tizen.dynamicanalyzer.nl.SummaryLabels; +import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider; import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackManager; import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit; import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager; +import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.Formatter; -public class FunctionUsageProfiler { +public class FunctionUsageProfiler implements Runnable { class CallstackTree { ProfilingData me; @@ -62,12 +64,12 @@ public class FunctionUsageProfiler { public void addChildExeTime(int time) { childExeTime += time; } - + public int getInclusiveExeTime() { -// int cTime = 0; -// for (int i = 0; i < children.size(); i++) { -// cTime += children.get(i).getThis().getLastExeTime(); -// } + // int cTime = 0; + // for (int i = 0; i < children.size(); i++) { + // cTime += children.get(i).getThis().getLastExeTime(); + // } return me.getLastElapsedTime() - childExeTime; } @@ -90,6 +92,9 @@ public class FunctionUsageProfiler { private int totalSampleCount = 0; private CallstackTree current = null; + private final int QUEUE_CHECK_INTERVAL = 2; // sec + + private static FunctionUsageProfiler instance = null; /** * key: seq - value : function usage profiling data hash map all function @@ -106,11 +111,20 @@ public class FunctionUsageProfiler { * profiling data. all parent and child data is in */ private HashMap symbolSeqHash = null; + private List sampleInputs = null; + private static Thread profiler = null; private ProfilingData appBin = null; private ProfilingData dependentLib = null; private String appBinName = null; + public static FunctionUsageProfiler getInstance() { + if (null == instance) { + instance = new FunctionUsageProfiler(); + } + return instance; + } + public HashMap getProfilingDataMap() { if (null == profilingDataMap) { profilingDataMap = new HashMap(); @@ -132,6 +146,23 @@ public class FunctionUsageProfiler { return symbolSeqHash; } + private List getSampleInputs() { + if (null == sampleInputs) { + sampleInputs = new ArrayList(); + } + return sampleInputs; + } + + private String getFirstSample() { + String first = new String(getSampleInputs().get(0)); + getSampleInputs().remove(0); + return first; + } + + public void pushSample(String sample) { + getSampleInputs().add(sample); + } + public String getAppBinName() { return appBinName; } @@ -160,8 +191,8 @@ public class FunctionUsageProfiler { parent = makeNewProfilingData(inputCallstackApiData, true); checkUserCall(inputCallstackApiData, parent, null); - ProfilingData child = makeNewProfilingData( - inputCallstackApiData, false); + ProfilingData child = makeNewProfilingData(inputCallstackApiData, + false); parent.addChild(child); child.addExCount(); child.addElpasedTime(exeTime); @@ -171,7 +202,8 @@ public class FunctionUsageProfiler { child.addCallCount(); } } else { - ProfilingData child = getProfilingDataByKey(inputCallstackApiData.getSymbol()); + ProfilingData child = getProfilingDataByKey(inputCallstackApiData + .getSymbol()); if (null == child) { child = makeNewProfilingData(inputCallstackApiData, false); parent.addChild(child); @@ -186,15 +218,19 @@ public class FunctionUsageProfiler { if (type == LogCenterConstants.USER_FUNCTION_EVENT_TYPE_EXIT) { if (null == current) { // bug - System.out.println("bug found!!" + inputCallstackApiData.getFunctionName()); //$NON-NLS-1$ + System.out + .println("bug found!!" + inputCallstackApiData.getFunctionName()); //$NON-NLS-1$ } else { CallstackTree parentCt = current.getParent(); - if(null != parentCt) { - parentCt.addChildExeTime(current.getThis().getLastElapsedTime()); + if (null != parentCt) { + parentCt.addChildExeTime(current.getThis() + .getLastElapsedTime()); } child.addExclusiveElapsedTime(current.getInclusiveExeTime()); current = current.getParent(); - UIDataManager.getInstance().getfunctionProfilingDataChecker().addPfofilingData( child ); + UIDataManager.getInstance() + .getfunctionProfilingDataChecker() + .addPfofilingData(child); } } else { if (null == current) { @@ -231,9 +267,9 @@ public class FunctionUsageProfiler { if (null == inputData) { return; } - + // drop samples of probe library - if(inputData.getPath().startsWith(AnalyzerPaths.DA_REMOTE_PROBE_PATH)) { + if (inputData.getPath().startsWith(AnalyzerPaths.DA_REMOTE_PROBE_PATH)) { return; } @@ -248,8 +284,7 @@ public class FunctionUsageProfiler { if (inputFuncName.equals(UNKNOWN)) { parent.addExCount(); } else { - ProfilingData child = makeNewProfilingData( - inputData, false); + ProfilingData child = makeNewProfilingData(inputData, false); parent.addChild(child); child.addExCount(); child.setParent(parent.getName()); @@ -273,10 +308,11 @@ public class FunctionUsageProfiler { for (int i = 0; i < addrs.size(); i++) { CallStackUnit callstackCsa = addrMap.get(addrs.get(i)); // disable inclusive cpu time of dependent library - if (!CallStackManager.getInstance().checkUserCall(callstackCsa.getPath())) { + if (!CallStackManager.getInstance().checkUserCall( + callstackCsa.getPath())) { continue; } - + if (callstackCsa.getFunctionName().equals(UNKNOWN)) { ProfilingData inParent = getProfilingDataByKey(callstackCsa .getPath()); @@ -286,11 +322,11 @@ public class FunctionUsageProfiler { checkUserCall(callstackCsa, inParent, pp); } inParent.addInCount(totalSampleCount); - + if (null != inParent.getParent()) { String pInParentName = inParent.getParent(); pp = getProfilingDataByKey(pInParentName); - pp.addInCount(totalSampleCount); + pp.addInCount(totalSampleCount); } } else { ProfilingData fupData = getProfilingDataByKey(callstackCsa @@ -328,8 +364,8 @@ public class FunctionUsageProfiler { } } - private void checkUserCall(CallStackUnit csa, - ProfilingData parent, ProfilingData pp) { + private void checkUserCall(CallStackUnit csa, ProfilingData parent, + ProfilingData pp) { if (CallStackManager.getInstance().checkUserCall(csa.getPath())) { if (null == appBin) { CallStackUnit appBinCsa = new CallStackUnit(-1, @@ -384,7 +420,7 @@ public class FunctionUsageProfiler { CallStackUnit funcName = addrMap.get(addr); if (null == funcName) { String funcSymbol = callstackLog.get(i + 1); -// funcSymbol = SymbolNameDemangler.nameDemangle(funcSymbol); + // funcSymbol = SymbolNameDemangler.nameDemangle(funcSymbol); CallStackUnit cas = new CallStackUnit(addr, funcSymbol); if (null == addrMap.get(addr)) { addrMap.put(addr, cas); @@ -428,10 +464,9 @@ public class FunctionUsageProfiler { return getProfilingDataMap().get(seq); } - private ProfilingData makeNewProfilingData( - CallStackUnit inputData, boolean isParent) { - ProfilingData newProfilingData = new ProfilingData( - inputData, isParent); + private ProfilingData makeNewProfilingData(CallStackUnit inputData, + boolean isParent) { + ProfilingData newProfilingData = new ProfilingData(inputData, isParent); getProfilingDataMap().put(newProfilingData.getSequence(), newProfilingData); if (isParent) { @@ -459,4 +494,51 @@ public class FunctionUsageProfiler { public int getTotalSampleCount() { return totalSampleCount; } + + public static void startProfiler() { + if (null == profiler || !profiler.isAlive()) { + profiler = new Thread(null, new FunctionUsageProfiler(), + AnalyzerConstants.LOG_QUEUE_OBSERVING_THREAD); + profiler.start(); + } + } + + public static void stopProfiler() { + if (null != profiler && profiler.isAlive()) { + profiler.interrupt(); + } + } + + /*** profiling thread ***/ + @Override + public void run() { + System.out.println("start profiling thread"); + int emptyCount = 0; + while (true) { + try { + if (!getInstance().getSampleInputs().isEmpty()) { + String sample = getInstance().getFirstSample(); + getInstance().makeFunctionUsageProfileData(sample); + emptyCount = 0; + } else if (emptyCount < QUEUE_CHECK_INTERVAL + || (AnalyzerUtil.getRecordState() + .equals(RecordStateSourceProvider.RECORD_RECORDING))) { + emptyCount++; + Thread.sleep(AnalyzerConstants.LOG_CHECK_INTERVAL); + } else { + break; + } + } catch (InterruptedException e) { + /** thread stop by interrupt */ + break; + } + } + + /* log for debug */ + System.out.println("profiling thread end!!"); //$NON-NLS-1$ + } + + public static void clear() { + instance = null; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingData.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingData.java index 266250c..2d27ee0 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingData.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingData.java @@ -30,7 +30,6 @@ package org.tizen.dynamicanalyzer.ui.summary.profiling; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit; public class ProfilingData { @@ -73,7 +72,9 @@ public class ProfilingData { public ProfilingChildData getChildData() { if (null == children) { children = new ProfilingChildData(Integer.toString(seq)); - AnalyzerManager.getFunctionUserProfiler().getChildListMap() + // AnalyzerManager.getFunctionUserProfiler().getChildListMap() + // .put(Integer.toString(seq), children); + FunctionUsageProfiler.getInstance().getChildListMap() .put(Integer.toString(seq), children); } return children; @@ -154,8 +155,9 @@ public class ProfilingData { return exCount; } - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); + // FunctionUsageProfiler profiler = AnalyzerManager + // .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); int size = seqs.size(); int count = 0; for (int i = 0; i < size; i++) { @@ -236,8 +238,9 @@ public class ProfilingData { } public List getChildList() { - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); + // FunctionUsageProfiler profiler = AnalyzerManager + // .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); List output = new ArrayList(); List seqs = getChildData().getChildren(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingTable.java index 6e2f0a1..4418583 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingTable.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/ProfilingTable.java @@ -53,6 +53,7 @@ import org.tizen.dynamicanalyzer.utils.Formatter; public class ProfilingTable extends DATreeComposite { public static final String ID = ProfilingTable.class.getName(); + public ProfilingTable(Composite parent, int compStyle, int tableStyle) { super(parent, compStyle, tableStyle); setComparator(new TreeDataComparator()); @@ -197,8 +198,9 @@ public class ProfilingTable extends DATreeComposite { } tableData.setObject(input.getName()); - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); + // FunctionUsageProfiler profiler = AnalyzerManager + // .getFunctionUserProfiler(); String exTime = "0", exRate = "0.00", inTime = "0", inRate = "0.00", callCount = "0", exeTime = "0", inExeTime = "0"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ try { @@ -274,9 +276,9 @@ public class ProfilingTable extends DATreeComposite { @Override public List makeTreeInput() { List output = new ArrayList(); - FunctionUsageProfiler profiler = AnalyzerManager - .getFunctionUserProfiler(); - + // FunctionUsageProfiler profiler = AnalyzerManager + // .getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); ProfilingData appBin = profiler.getAppBin(); if (null != appBin) { TreeInput appBinInput = makeInput(appBin, diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningCase.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningCase.java index 443974c..9d904da 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningCase.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningCase.java @@ -29,27 +29,25 @@ package org.tizen.dynamicanalyzer.ui.summary.warning; import org.tizen.dynamicanalyzer.nl.SummaryLabels; public enum WarningCase { - DUPLICATE_OPEN( - 1, - SummaryLabels.WARNING_CASE_PRE_FIX, + DUPLICATE_OPEN(1, SummaryLabels.WARNING_CASE_PRE_FIX, SummaryLabels.WARNING_CASE_POST_FIX_DUPLICATE, - SummaryLabels.WARNING_CASE_BRIEF_DUPLICATE), - WITHOUT_USING( - 2, + SummaryLabels.WARNING_CASE_BRIEF_DUPLICATE), WITHOUT_USING(2, SummaryLabels.WARNING_CASE_PRE_FIX, SummaryLabels.WARNING_CASE_POST_FIX_NO_OPERATION, - SummaryLabels.WARNING_CASE_BRIEF_NO_OPERATION), - REPEATEDLY_OPEN_CLOSE( - 3, - SummaryLabels.WARNING_CASE_PRE_FIX, - SummaryLabels.WARNING_CASE_POST_FIX_REPEAT, - SummaryLabels.WARNING_CASE_BRIEF_REPEAT), - LONG_TIME_USED( - 4, - SummaryLabels.WARNING_CASE_PRE_FIX, - SummaryLabels.WARNING_CASE_POST_FIX_UNUSED, - SummaryLabels.WARNING_CASE_BRIEF_UNUSED); - + SummaryLabels.WARNING_CASE_BRIEF_NO_OPERATION + // ) + // , + // REPEATEDLY_OPEN_CLOSE( + // 3, + // SummaryLabels.WARNING_CASE_PRE_FIX, + // SummaryLabels.WARNING_CASE_POST_FIX_REPEAT, + // SummaryLabels.WARNING_CASE_BRIEF_REPEAT), + // LONG_TIME_USED( + // 4, + // SummaryLabels.WARNING_CASE_PRE_FIX, + // SummaryLabels.WARNING_CASE_POST_FIX_UNUSED, + // SummaryLabels.WARNING_CASE_BRIEF_UNUSED); + ); private final int type; private final String prefix; private final String postfix; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningDataManager.java index 268343f..131b0fc 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/warning/WarningDataManager.java @@ -91,18 +91,8 @@ public class WarningDataManager { return WarningCase.WITHOUT_USING.getShortMessage(); } return WarningCase.WITHOUT_USING.getMessage(warning.getKey()); - } else if (warningCase == WarningCase.REPEATEDLY_OPEN_CLOSE.getType()) { - if (isShort) { - return WarningCase.REPEATEDLY_OPEN_CLOSE.getShortMessage(); - } - return WarningCase.REPEATEDLY_OPEN_CLOSE.getMessage(warning - .getKey()); - } else if (warningCase == WarningCase.LONG_TIME_USED.getType()) { - if (isShort) { - return WarningCase.LONG_TIME_USED.getShortMessage(); - } - return WarningCase.LONG_TIME_USED.getMessage(warning.getKey()); } + // FIXME: error??? return ""; //$NON-NLS-1$ } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceDialog.java index a219e9b..0030fc8 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceDialog.java @@ -47,13 +47,10 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.AnalyzerPaths; import org.tizen.dynamicanalyzer.common.DesignConstants; -import org.tizen.dynamicanalyzer.handlers.ClearHandler; -import org.tizen.dynamicanalyzer.handlers.OpenTraceHandler; +import org.tizen.dynamicanalyzer.logparser.OpenTraceProgressManager; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; -import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.ui.widgets.DAButton; @@ -266,14 +263,8 @@ public class OpenTraceDialog extends DAMessageBox { openPath = AnalyzerPaths.DYNAMIC_ANALYZER_SAVE_PATH + File.separator + selection.getText(); } - - AnalyzerUtil.executeCommand(ClearHandler.ID); - Project p = new Project(); - AnalyzerManager.setProjectNoRegist(p); - // p.init(); - p.setSavePath(openPath); - - AnalyzerUtil.executeCommand(OpenTraceHandler.ID); + OpenTraceProgressManager.getInstance().setSavePath(openPath); + OpenTraceProgressManager.getInstance().startOpenTraceThread(); shell.dispose(); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceInputReader.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceInputReader.java index 23a7e44..ac32207 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceInputReader.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/OpenTraceInputReader.java @@ -30,7 +30,6 @@ import java.util.List; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.handlers.OpenTraceCompleteHandler; import org.tizen.dynamicanalyzer.logparser.LogPackage; import org.tizen.dynamicanalyzer.logparser.Logs; import org.tizen.dynamicanalyzer.model.LogCenter; @@ -43,7 +42,7 @@ public class OpenTraceInputReader implements Runnable { private static Thread openTraceInputThread = null; - public static void startOpenTraceThread() { + public static void startOpenTraceInputReader() { if (null == openTraceInputThread || !openTraceInputThread.isAlive()) { openTraceInputThread = new Thread(null, new OpenTraceInputReader(), AnalyzerConstants.OPEN_TRACE_THREAD); @@ -51,14 +50,21 @@ public class OpenTraceInputReader implements Runnable { } } - public static void stopOpenTraceThread() { + public static void stopOpenTraceInputReader() { if (null != openTraceInputThread && openTraceInputThread.isAlive()) { openTraceInputThread.interrupt(); } } + public static boolean isThreadAlive() { + if (null == openTraceInputThread || !openTraceInputThread.isAlive()) { + return false; + } + return true; + } + public static void clear() { - stopOpenTraceThread(); + stopOpenTraceInputReader(); } @Override @@ -88,8 +94,8 @@ public class OpenTraceInputReader implements Runnable { from += AnalyzerConstants.DATABASE_READ_SIZE; to = from + AnalyzerConstants.DATABASE_READ_SIZE; } + System.out.println("input reader complete"); // end - AnalyzerUtil.executeCommand(OpenTraceCompleteHandler.ID); } private void updateLog(LogPackage logPack) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RecordStartStopThread.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RecordStartStopThread.java index 6d1ea71..2373f52 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RecordStartStopThread.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/RecordStartStopThread.java @@ -36,8 +36,8 @@ import org.tizen.dynamicanalyzer.logparser.LogParser; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.services.RecordStateSourceProvider; import org.tizen.dynamicanalyzer.ui.file.chart.FileChartManager; -import org.tizen.dynamicanalyzer.ui.info.range.StateManager; -import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager; +import org.tizen.dynamicanalyzer.ui.info.range.StopProcessManager; +import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; import org.tizen.dynamicanalyzer.uirecorder.UIRecorderTool; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; import org.tizen.dynamicanalyzer.utils.UpdateViewTimer; @@ -114,8 +114,7 @@ public class RecordStartStopThread implements Runnable { ToolbarArea.getInstance().startTimer(); LogParser.startLogParser(); FileChartManager.getInstance().startUpdateLogThread(); - UIDataManager.getInstance().startUpdateLogThread(); - + FunctionUsageProfiler.startProfiler(); /* Timeline */ UpdateViewTimer.start(); @@ -141,12 +140,11 @@ public class RecordStartStopThread implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().stopProcessStart( + StopProcessManager.getInstance().stopProcessStart( AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA); } }); AnalyzerUtil.executeCommand(StopHandler.ID); - UIDataManager.getInstance().stopUpdateLogThread(); } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopLogProcessor.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopLogProcessor.java index 136a62a..a9a886d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopLogProcessor.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopLogProcessor.java @@ -33,7 +33,7 @@ import org.tizen.dynamicanalyzer.logparser.LogInserter; import org.tizen.dynamicanalyzer.logparser.LogParser; import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.sql.SqlManager; -import org.tizen.dynamicanalyzer.ui.info.range.StateManager; +import org.tizen.dynamicanalyzer.ui.info.range.StopProcessManager; import org.tizen.dynamicanalyzer.utils.UpdateViewTimer; public class StopLogProcessor implements Runnable { @@ -77,7 +77,7 @@ public class StopLogProcessor implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().saveProjectAndOthers(); + StopProcessManager.getInstance().saveProjectAndOthers(); } }); @@ -92,7 +92,7 @@ public class StopLogProcessor implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().insertToDBComplete(); + StopProcessManager.getInstance().insertToDBComplete(); } }); @@ -123,7 +123,7 @@ public class StopLogProcessor implements Runnable { repeatCount++; if (repeatCount == AnalyzerConstants.MAX_REPEAT_COUNT) { LogParser.getLogQueue().clear(); - OpenTraceInputReader.stopOpenTraceThread(); + OpenTraceInputReader.stopOpenTraceInputReader(); } final int nSeclect = repeatCount * 10; @@ -131,7 +131,7 @@ public class StopLogProcessor implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().waitForLogParsing( + StopProcessManager.getInstance().waitForLogParsing( nSeclect); } }); @@ -140,7 +140,7 @@ public class StopLogProcessor implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().waitForLogParsing(50); + StopProcessManager.getInstance().waitForLogParsing(50); } }); System.out.println("wait for log parsing..."); //$NON-NLS-1$ @@ -155,7 +155,7 @@ public class StopLogProcessor implements Runnable { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().stopTrace(); + StopProcessManager.getInstance().stopTrace(); } }); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java index 23ac2b3..11c14ce 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/UIDataManager.java @@ -60,7 +60,6 @@ public class UIDataManager implements Runnable { LogListQueue controllogListQueue = getInstance().getControlLogListQueue(); LogListQueue sceneTransformlogListQueue = getInstance().getSceneTransformLogListQueue(); while (true) { - try { boolean isSleep = true; if (!controllogListQueue.isEmpty()) { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/profiling/UIFunctionProfilingDataChecker.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/profiling/UIFunctionProfilingDataChecker.java index ef2aded..131b001 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/profiling/UIFunctionProfilingDataChecker.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/userinterface/profiling/UIFunctionProfilingDataChecker.java @@ -9,7 +9,6 @@ import java.util.ArrayList; import java.util.List; import java.util.TreeSet; -import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.common.AnalyzerPaths; import org.tizen.dynamicanalyzer.nl.AnalyzerLabels; import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler; @@ -65,7 +64,7 @@ public class UIFunctionProfilingDataChecker { UIFunctionProfilingData fd = new UIFunctionProfilingData(); - FunctionUsageProfiler profiler = AnalyzerManager.getFunctionUserProfiler(); + FunctionUsageProfiler profiler = FunctionUsageProfiler.getInstance(); String exTime = "-", inTime = "-", exeTime = "-", inExeTime = "-",exAvgTime = "-", inAvgTime = "-", exeAvgTime = "-", inExeAvgTime = "-"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ try { exTime = profiler.getCpuTime(input, true); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java similarity index 86% rename from org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java rename to org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java index 2ae1870..9f0e100 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/StopProgressDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java @@ -49,11 +49,12 @@ import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.utils.AnalyzerUtil; -public class StopProgressDialog { +public class ProgressDialog { private Shell parent = null; private Shell shell = null; private long excuteTime = 10000; // max process time(default 10000 // MiliSeconds) + Composite base; private Label loadingImage = null; private Label processMessage = null; private Label processInfo = null; @@ -65,21 +66,21 @@ public class StopProgressDialog { private static final int DEFAULT_MAXIMUM = 100; private static final int TIMER_PERIOD = 1000; private static final int DEFAULT_LINE_WIDTH = 1; - + private final Image iconImage = ImageResources.STOP_PROGRESS_LOADING; - + Timer timer = null; long startTime = 0; long time; - public StopProgressDialog(Shell parent, int style) { + public ProgressDialog(Shell parent, int style) { shell = new Shell(parent, style); this.parent = parent; createContents(); AnalyzerUtil.setCenter(shell); } - public StopProgressDialog(Shell parent, int style, long excuteTime) { + public ProgressDialog(Shell parent, int style, long excuteTime) { this(parent, style); this.excuteTime = excuteTime; } @@ -118,35 +119,49 @@ public class StopProgressDialog { } public void setProcessSelection(int value) { - if (null == progressbar){ + if (null == progressbar) { return; } - if(value < progressbar.getSelection()){ + if (value < progressbar.getSelection()) { return; } + redrawOthers(); progressbar.setSelection(value); } + private void redrawOthers() { + /* TODO: bug fix */ + // temp code for ubuntu 11.10 bug + // other OS test required + base.redraw(); + loadingImage.redraw(); + processInfo.redraw(); + shell.redraw(); + } + protected void createContents() { setDefaultSize(parent.getBounds()); - FillLayout fillLayout = new FillLayout(); - fillLayout.marginHeight = DEFAULT_LINE_WIDTH*2; - fillLayout.marginWidth = DEFAULT_LINE_WIDTH*2; - + FillLayout fillLayout = new FillLayout(); + fillLayout.marginHeight = DEFAULT_LINE_WIDTH * 2; + fillLayout.marginWidth = DEFAULT_LINE_WIDTH * 2; + shell.setLayout(fillLayout); shell.addPaintListener(new PaintListener() { - + @Override public void paintControl(PaintEvent e) { e.gc.setForeground(ColorResources.STOP_PROGRESS_LINE2_COLOR); e.gc.setLineWidth(DEFAULT_LINE_WIDTH); e.gc.drawRectangle(e.x, e.y, e.width, e.height); e.gc.setForeground(ColorResources.STOP_PROGRESS_LINE1_COLOR); - e.gc.drawRectangle(e.x+DEFAULT_LINE_WIDTH, e.y+DEFAULT_LINE_WIDTH, e.width - (DEFAULT_LINE_WIDTH*2), e.height - (DEFAULT_LINE_WIDTH*2)); + e.gc.drawRectangle(e.x + DEFAULT_LINE_WIDTH, e.y + + DEFAULT_LINE_WIDTH, e.width + - (DEFAULT_LINE_WIDTH * 2), e.height + - (DEFAULT_LINE_WIDTH * 2)); } }); - - Composite base = new Composite(shell, SWT.NONE); + + base = new Composite(shell, SWT.NONE); base.setLayout(new FormLayout()); base.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); @@ -160,13 +175,15 @@ public class StopProgressDialog { // Loading image loadingImage = new Label(base, SWT.NONE); - loadingImage.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); + loadingImage + .setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); loadingImage.setImage(iconImage); - + // Process Message processMessage = new Label(base, SWT.NONE); processMessage.setText(message); - processMessage.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); + processMessage + .setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); processMessage.setAlignment(SWT.LEFT); processMessage.setForeground(ColorResources.DEFAULT_FONT_COLOR); processMessage.setFont(FontResources.STOP_PROGRESS_FONT); @@ -174,7 +191,8 @@ public class StopProgressDialog { // Process Infomation processInfo = new Label(base, SWT.NONE); processInfo.setText(infomation); - processInfo.setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); + processInfo + .setBackground(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR); processInfo.setAlignment(SWT.LEFT); processInfo.setForeground(ColorResources.STOP_PROGRESS_INFO_FONT_COLOR); processInfo.setFont(FontResources.STOP_PROGRESS_FONT); @@ -183,7 +201,6 @@ public class StopProgressDialog { progressbar = new ProgressBar(base, SWT.SMOOTH); progressbar.setMaximum(DEFAULT_MAXIMUM); - // loading icon FormData formData = new FormData(); formData.left = new FormAttachment(0, 10); @@ -191,7 +208,7 @@ public class StopProgressDialog { formData.width = 24; formData.height = 24; loadingImage.setLayoutData(formData); - + // Process Message formData = new FormData(); formData.left = new FormAttachment(loadingImage, 5); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/SymbolNameDemangler.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/SymbolNameDemangler.java index 75e25f7..758bd4c 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/SymbolNameDemangler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/SymbolNameDemangler.java @@ -298,15 +298,17 @@ public class SymbolNameDemangler { } // return demangled; - return makeReturnValue(demangled); + return makeReturnValue(mangled, demangled); } - private static String makeReturnValue(String input) { - if (input.length() > 0) { - String[] splitInput = input.split("\\("); + private static String makeReturnValue(String mangled, String demangled) { + if (demangled.length() > 0) { + String[] splitInput = demangled.split("\\("); return new String(splitInput[0]); } - return null; + // FIXME: no here!! + System.out.println("demangling failed and return mangled fuction Name" + mangled); + return mangled; } private static String readFunc(String func) throws Exception { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/UpdateViewTimer.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/UpdateViewTimer.java index 608598e..272b3f9 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/UpdateViewTimer.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/utils/UpdateViewTimer.java @@ -30,7 +30,7 @@ import java.util.Timer; import org.eclipse.swt.widgets.Display; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; -import org.tizen.dynamicanalyzer.ui.info.range.StateManager; +import org.tizen.dynamicanalyzer.ui.info.range.StopProcessManager; import org.tizen.dynamicanalyzer.ui.toolbar.UpdateTimerTask; public class UpdateViewTimer { @@ -74,7 +74,7 @@ public class UpdateViewTimer { Display.getDefault().syncExec(new Runnable() { @Override public void run() { - StateManager.getInstance().updateTimerStop(); + StopProcessManager.getInstance().updateTimerStop(); } }); }