From c76200b2aa9f5ece6c50d0066d6a040ab7d0d626 Mon Sep 17 00:00:00 2001 From: jooyoul_lee Date: Wed, 28 Aug 2013 18:20:41 +0900 Subject: [PATCH] [Title] restart trace hang fixed [Desc.] [Issue] TDIS-7189 --- .../dynamicanalyzer/common/AnalyzerManager.java | 11 + .../communicator/BaseCommunicator.java | 4 + .../communicator/CommunicatorUtils.java | 18 +- .../communicator/DACommunicator.java | 31 ++- .../dynamicanalyzer/handlers/ExitHandler.java | 2 + .../dynamicanalyzer/logparser/InsertLogQueue.java | 10 +- .../dynamicanalyzer/logparser/LogInserter.java | 17 +- .../dynamicanalyzer/logparser/LogListQueue.java | 3 +- .../tizen/dynamicanalyzer/logparser/LogParser.java | 16 +- .../org/tizen/dynamicanalyzer/sql/SqlManager.java | 2 +- .../swap/communicator/Communicator30.java | 45 ++-- .../swap/logparser/MessageParser.java | 268 ++++++--------------- .../swap/logparser/SWAPLogParser.java | 18 +- .../swap/model/control/BinaryInfo.java | 8 +- .../swap/model/data/BasicDataMessage.java | 243 ++++++++++--------- .../summary/profiling/FunctionUsageProfiler.java | 3 +- .../dynamicanalyzer/ui/toolbar/ToolbarArea.java | 51 ++-- .../ui/toolbar/opentrace/OpenTraceInputReader.java | 5 +- .../dynamicanalyzer/uirecorder/RecordingQueue.java | 6 +- 19 files changed, 358 insertions(+), 403 deletions(-) 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 2e81c9d..671d8d3 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/common/AnalyzerManager.java @@ -66,6 +66,7 @@ public class AnalyzerManager { private static DATheme theme = null; private static Project project = null; private static boolean isRunning = false; + private static boolean isLogParsingComplete = false; private static List baseLogCenters; private static List logCenters; @@ -90,6 +91,7 @@ public class AnalyzerManager { private static long endBinaryAddr = -1; public static final int THREAD_JOIN_WAIT_TIME = 5000; + public static final int INSERT_JOIN_WAIT_TIME = 30000; public static boolean isExit() { return exit; @@ -188,6 +190,7 @@ public class AnalyzerManager { callstackManager.clear(); swapCallstackManager.clear(); isHaveSampleThread = false; + isLogParsingComplete = false; StopProcessManager.clear(); UserFunctionManager.getInstance().clear(); FunctionUsageProfiler.clear(); @@ -465,4 +468,12 @@ public class AnalyzerManager { public static void setRunningState(boolean isRunning) { AnalyzerManager.isRunning = isRunning; } + + public static boolean isLogParsingComplete() { + return isLogParsingComplete; + } + + public static void setLogParsingComplete(boolean complete) { + isLogParsingComplete = complete; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java index ceef1d0..f3d53a6 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/BaseCommunicator.java @@ -5,6 +5,7 @@ import java.net.Socket; import org.tizen.dynamicanalyzer.common.HostResult; import org.tizen.dynamicanalyzer.model.DeviceInfo; +import org.tizen.dynamicanalyzer.project.AppInfo; public abstract class BaseCommunicator { @@ -41,4 +42,7 @@ public abstract class BaseCommunicator { public abstract Socket getDataSocket(); public abstract void closeSock(); + + public void setSelectedApp(AppInfo app) { + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/CommunicatorUtils.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/CommunicatorUtils.java index a80cd80..c4ac285 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/CommunicatorUtils.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/CommunicatorUtils.java @@ -31,7 +31,7 @@ import org.tizen.sdblib.service.SyncService; public class CommunicatorUtils { private static List uploadDataResult = new ArrayList(); private static boolean isArch = false; - private static final int PORT_WAIT_TIME = 5 * 1000 * 2; //ms + private static final int PORT_WAIT_TIME = 5 * 1000 * 2; // ms private static List portLines = new ArrayList(); public static final int LOCAL_PORT = 8000; @@ -410,9 +410,23 @@ public class CommunicatorUtils { } } + public static void execHostCommand(IDevice device, String command, + IShellOutputReceiver receiver) { + if (null != device && isOnline(device)) { + try { + device.executeHostCommand(command, receiver); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + public static Process execCommand(String command) { DeviceInfo currentDevice = DACommunicator.getSelectedDevice(); - return execCommand(currentDevice.getIDevice(), command); + if (null != currentDevice) { + return execCommand(currentDevice.getIDevice(), command); + } + return null; } public static Process execCommand(IDevice device, String command) { 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 fe44b2a..382a710 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/communicator/DACommunicator.java @@ -145,6 +145,9 @@ public class DACommunicator { public static void setSelectedApp(AppInfo app) { selectedApp = app; + if (null != communicator) { + communicator.setSelectedApp(app); + } } public static void setNewBridge() { @@ -194,7 +197,7 @@ public class DACommunicator { HostResult result = null; String version = null; checkVersionResult.clear(); - CommunicatorUtils.execShellCommand( + CommunicatorUtils.execHostCommand(info.getIDevice(), AnalyzerShellCommands.DACOMMAND_CHECK_VERSION, new MultiLineReceiver() { @Override @@ -205,11 +208,12 @@ public class DACommunicator { } }); if (checkVersionResult.isEmpty()) { -// info.setTargetVersion(DA_VERSION_OLD); - // return HostResult.ERR_INVALID_VERSION; - info.setTargetVersion(DA_VERSION_SWAP); + info.setTargetVersion(DA_VERSION_OLD); + return HostResult.ERR_INVALID_VERSION; +// info.setTargetVersion(DA_VERSION_SWAP); } else { version = checkVersionResult.get(0); + System.out.println("version :" + version); if (version.contains(DA_VERSION_SWAP)) { info.setTargetVersion(version); result = HostResult.SUCCESS; @@ -856,6 +860,21 @@ public class DACommunicator { // It called when dynamic-analyzer start, only one time System.out .println("device connected : " + device.getSerialNumber()); + addDevice(device); + if (!AnalyzerManager.isRunning()) { + checkDevices(); + } + if (null != getSelectedDevice() && null != getSelectedApp()) { + Display.getDefault().syncExec(new Runnable() { + @Override + public void run() { + ToolbarArea.getInstance() + .setStartButtonEnablement(true); + ToolbarArea.getInstance() + .setStartButtonEnablement(true); + } + }); + } } @Override @@ -987,10 +1006,10 @@ public class DACommunicator { communicator.clear(); } - public static void closeSock() - { + public static void closeSock() { communicator.closeSock(); } + public static HostResult handleControlMessage(String msg) { return communicator.handleControlMessage(msg); } 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 e1b1290..2da70be 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/handlers/ExitHandler.java @@ -36,6 +36,7 @@ import org.tizen.dynamicanalyzer.communicator.DACommunicator; import org.tizen.dynamicanalyzer.communicator.IDECommunicator; import org.tizen.dynamicanalyzer.logparser.LogInserter; import org.tizen.dynamicanalyzer.logparser.LogParser; +import org.tizen.dynamicanalyzer.swap.logparser.SWAPLogParser; import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor; import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea; import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceInputReader; @@ -51,6 +52,7 @@ public class ExitHandler extends AbstractHandler { ToolbarArea.getInstance().stopTimer(); UpdateViewTimer.stop(); LogParser.stopLogParser(); + SWAPLogParser.stopLogParser(); StopLogProcessor.stopStopLogProcessThread(); IDECommunicator.stopIDEcommunicatorThread(); OpenTraceInputReader.stopOpenTraceInputReader(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/InsertLogQueue.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/InsertLogQueue.java index 81f6c16..d99869f 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/InsertLogQueue.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/InsertLogQueue.java @@ -26,13 +26,17 @@ package org.tizen.dynamicanalyzer.logparser; - import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.swap.logparser.LogPackage;; + +import org.tizen.dynamicanalyzer.common.AnalyzerManager; +import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; + +; public class InsertLogQueue { private static final int FULL_COUNT = 10000; + public boolean isWait = false; List logs = null; private List getLogs() { @@ -44,7 +48,7 @@ public class InsertLogQueue { public synchronized LogPackage getFirstLog() { while (isEmpty()) { - if (LogParser.isLogParsingComplete()) { + if (AnalyzerManager.isLogParsingComplete()) { return null; } try { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java index 0f8c8b3..c8708ad 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogInserter.java @@ -56,7 +56,7 @@ public class LogInserter implements Runnable { if (null != insertLogThread && insertLogThread.isAlive()) { try { sendNotify(); - insertLogThread.join(AnalyzerManager.THREAD_JOIN_WAIT_TIME); + insertLogThread.join(AnalyzerManager.INSERT_JOIN_WAIT_TIME); System.out.println("insert thread join complete!!"); //$NON-NLS-1$ } catch (InterruptedException e) { e.printStackTrace(); @@ -100,7 +100,7 @@ public class LogInserter implements Runnable { int size = logIds.size(); InsertLogQueue logQueue = getInsertLogQueue(); while (!AnalyzerManager.isExit()) { -// try { + try { LogPackage logPack = logQueue.getFirstLog(); if (null == logPack) { break; @@ -117,16 +117,17 @@ public class LogInserter implements Runnable { for (int i = 0; i < size; i++) { int logId = logIds.get(i); - List msgs = getLogPackage().getMessages(logId); + List msgs = getLogPackage().getMessages( + logId); if (null != msgs) { -// SqlManager.getInstance().insert(logId, msgs); + SqlManager.getInstance().insert(logId, msgs); } } initLogPackage(); -// } catch (InterruptedException e) { -// System.out.println("insert log thread interrupted"); //$NON-NLS-1$ -// break; -// } + } catch (InterruptedException e) { + System.out.println("insert log thread interrupted"); //$NON-NLS-1$ + break; + } } isCompleted = true; System.out.println("insert log thread end"); //$NON-NLS-1$ diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogListQueue.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogListQueue.java index e09587a..a6f1bfe 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogListQueue.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogListQueue.java @@ -29,6 +29,7 @@ package org.tizen.dynamicanalyzer.logparser; import java.util.ArrayList; import java.util.List; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; public class LogListQueue { @@ -40,7 +41,7 @@ public class LogListQueue { public synchronized List getFirst() { while (isEmpty()) { - if (LogParser.isLogParsingComplete()) { + if (AnalyzerManager.isLogParsingComplete()) { return null; } try { 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 d2f22d4..8eadfaf 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/logparser/LogParser.java @@ -61,7 +61,7 @@ public class LogParser implements Runnable { private static boolean dropCallTraceLog = false; private static LogQueue logQueue = null; - private static boolean isLogParsingComplete = false; +// private static boolean isLogParsingComplete = false; private int SMALL_IMG_WIDTH = 40; private int SMALL_IMG_HEIGHT = 66; @@ -75,7 +75,7 @@ public class LogParser implements Runnable { public static void clear() { stopLogParser(); getLogQueue().clear(); - isLogParsingComplete = false; +// isLogParsingComplete = false; } public static LogQueue getLogQueue() { @@ -93,14 +93,6 @@ public class LogParser implements Runnable { return dropCallTraceLog; } - public static boolean isLogParsingComplete() { - return isLogParsingComplete; - } - - public static void setLogParsingComplete(boolean complete) { - isLogParsingComplete = complete; - } - public static void startLogParser() { if (null == logParser || !logParser.isAlive()) { logParser = new Thread(null, new LogParser(), @@ -127,7 +119,7 @@ public class LogParser implements Runnable { /*** log parsing thread ***/ @Override public void run() { - isLogParsingComplete = false; + AnalyzerManager.setLogParsingComplete(false); LogQueue logQueue = getLogQueue(); while (!AnalyzerManager.isExit()) { List logs = logQueue.getFirst(); @@ -139,7 +131,7 @@ public class LogParser implements Runnable { /* log for debug */ System.out.println("log parsing thread end!!"); //$NON-NLS-1$ - isLogParsingComplete = true; + AnalyzerManager.setLogParsingComplete(true); if (!AnalyzerManager.isExit()) { ToolbarArea.getInstance().stopTimer(); 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 c51a4be..da94194 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/sql/SqlManager.java @@ -442,7 +442,7 @@ public class SqlManager { String tableName = LogDataFactory.getTableNamebyId(logId); String insertQuery = "insert into " + tableName + " values( ?, ?, ?, ?, ?);"; - System.out.println("inser query : " + insertQuery); +// System.out.println("inser query : " + insertQuery); insertLogQuery(logId, insertQuery, input); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java index ab931cd..662da70 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java @@ -153,15 +153,17 @@ public class Communicator30 extends BaseCommunicator { // AnalyzerConstants.HEART_BEAT_THREAD); // heartBeat.start(); // + + setSelectedApp(DACommunicator.getSelectedApp()); return HostResult.SUCCESS; } @Override public HostResult startTrace() { - HostResult hr = sendBinaryInfoMessage(); - if (!hr.isSuccess()) { - System.out.println("binary info get failed :" + hr.getMessage()); - } + // HostResult hr = sendBinaryInfoMessage(); + // if (!hr.isSuccess()) { + // System.out.println("binary info get failed :" + hr.getMessage()); + // } // binary info message send DACommunicator.setRunning(true); ApplicationInfo appInfo = new ApplicationInfo(); @@ -204,8 +206,8 @@ public class Communicator30 extends BaseCommunicator { byte[] rear = ByteUtils.getByte(appInfo.getByteValue(), rt.getByteValue(), getUserSpaceInst().getByteValue(), replayEvent); -// byte[] rear = ByteUtils.getByte(appInfo.getByteValue(), -// rt.getByteValue(), 0,0); + // byte[] rear = ByteUtils.getByte(appInfo.getByteValue(), + // rt.getByteValue(), 0,0); int length = rear.length; byte[] ret = ByteUtils.getByte(AnalyzerConstants.MSG_START_SWAP, @@ -262,7 +264,7 @@ public class Communicator30 extends BaseCommunicator { List symbols = selectedApp.getSymbols(); List functionInstList = appInst.getFunctionInstList(); - int size = (symbols == null)? 0 : symbols.size(); + int size = (symbols == null) ? 0 : symbols.size(); appInst.setFunctionCount(size); for (int i = 0; i < size; i++) { AddrSymbolPair addrSymbol = symbols.get(i); @@ -278,12 +280,12 @@ public class Communicator30 extends BaseCommunicator { return output; } - public HostResult sendBinaryInfoMessage() { + public HostResult sendBinaryInfoMessage(AppInfo selectedApp) { // send config message byte[] msgBinInfo = ByteUtils .toBytes(AnalyzerConstants.MSG_BINARY_INFO); ApplicationInfo appInfo = new ApplicationInfo(); - AppInfo selectedApp = DACommunicator.getSelectedApp(); + // AppInfo selectedApp = DACommunicator.getSelectedApp(); String appType = selectedApp.getInfo(AppInfo.APPTYPE_INDEX); if (appType.contains(AppInfo.APPTYPE_CPP)) { appInfo.setAppType(ApplicationInfo.APPTYPE_TIZEN); @@ -306,12 +308,14 @@ public class Communicator30 extends BaseCommunicator { byte[] payload = getMessagePayload(result.getRet()); BinaryInfo binInfo = new BinaryInfo(); + selectedApp.setBinInfo(binInfo); int binaryType = ByteUtils.toInt(payload, 0); String targetPath = selectedApp.getInfo(AppInfo.EXEC_INDEX); String binaryPath = ByteUtils.getString(payload, INT_SIZE); - if (null == binaryPath || binaryPath.isEmpty()) { - return HostResult.ERR_BIN_INFO_GET_FAIL; + if (null == binaryPath) { + // return HostResult.ERR_BIN_INFO_GET_FAIL; + binaryPath = CommonConstants.EMPTY; } binInfo.setType(binaryType); @@ -329,7 +333,7 @@ public class Communicator30 extends BaseCommunicator { return HostResult.ERR_BIN_INFO_GET_FAIL; } binInfo.setPath(binaryPath); - selectedApp.setBinInfo(binInfo); + // selectedApp.setBinInfo(binInfo); return result; } @@ -379,10 +383,10 @@ public class Communicator30 extends BaseCommunicator { binaryPath = AnalyzerPaths.TEMP_FOLDER_PATH + File.separator + new String(splitName[splitName.length - 1]); binInfo.setPath(binaryPath); - selectedApp.setBinInfo(binInfo); + // selectedApp.setBinInfo(binInfo); } binInfo.setPath(binaryPath); - selectedApp.setBinInfo(binInfo); + // selectedApp.setBinInfo(binInfo); return result; } @@ -537,6 +541,10 @@ public class Communicator30 extends BaseCommunicator { dataSock.setSoTimeout(AnalyzerConstants.SOCKET_TIMEOUT); dataSock.setReuseAddress(true); dataSock.setTcpNoDelay(true); + +// byte[] testBuffer = new byte[1024]; +// dataSock.getInputStream().read(testBuffer); +// ByteUtils.printByteArray(testBuffer); } catch (UnknownHostException e) { result = HostResult.ERR_EXCEPTION_OCCURRED; result.setMessage(e.getMessage()); @@ -554,6 +562,7 @@ public class Communicator30 extends BaseCommunicator { if (result.isSuccess()) { device.setDataSock(dataSock); } + return result; } @@ -723,4 +732,12 @@ public class Communicator30 extends BaseCommunicator { return 'p'; } } + + @Override + public void setSelectedApp(AppInfo app) { + HostResult hr = sendBinaryInfoMessage(app); + if (!hr.isSuccess()) { + System.out.println("binary info get failed :" + hr.getMessage()); + } + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java index 7874305..bda5c9f 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java @@ -55,7 +55,6 @@ import org.tizen.dynamicanalyzer.swap.model.data.BasicDataMessage; import org.tizen.dynamicanalyzer.swap.model.data.DataChannelConstants; import org.tizen.dynamicanalyzer.swap.model.data.LibraryObject; import org.tizen.dynamicanalyzer.swap.model.data.ProcessInfo; -import org.tizen.dynamicanalyzer.swap.model.probe.LogFormat; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.LogDataFactory; import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor; @@ -79,6 +78,9 @@ public class MessageParser { final int MSG_BUFFER_TIMER_PERIOD = 1000; // 1 second final int WAITING_TIME = 100; + final int MSG_HEADER_SIZE = 20; + final int MSG_PAYLOAD_SIZE_INDEX = 16; + class AddBufferTimerTask extends TimerTask { private int count = 0; @@ -147,8 +149,6 @@ public class MessageParser { int index = 0; pid = ByteUtils.toInt(payload, index); index += INT_SIZE; - // startTime = ByteUtils.toLong(payload, index); - // index += LONG_SIZE; long sec = ByteUtils.toInt(payload, index); index += INT_SIZE; long nano = ByteUtils.toInt(payload, index); @@ -159,8 +159,6 @@ public class MessageParser { index += LONG_SIZE; highAddr = ByteUtils.toLong(payload, index); index += LONG_SIZE; -// appType = ByteUtils.toInt(payload, index); -// index += INT_SIZE; binaryType = ByteUtils.toInt(payload, index); index += INT_SIZE; binaryPath = ByteUtils.getString(payload, index); @@ -188,10 +186,10 @@ public class MessageParser { + " " + startTime.getNano() + " startTime : " + pInfo.getStartTime().getSec() + " " + pInfo.getStartTime().getNano()); - // pInfo.setStartTime(startTime); + pInfo.setStartTime(startTime); pInfo.setLowestAddress(lowAddr); pInfo.setHighestAddress(highAddr); -// pInfo.setAppType(appType); + pInfo.setAppType(appType); pInfo.setBinaryType(binaryType); pInfo.setBinaryPath(binaryPath); pInfo.setDepLibCount(dependantLibCount); @@ -245,7 +243,6 @@ public class MessageParser { } public void startMessageParsing(Socket dataSocket) { - byte[] buf = new byte[1024 * 10]; InputStream inputStream = null; try { @@ -258,40 +255,72 @@ public class MessageParser { try { BasicDataMessage dataMessage = null; - byte[] readBuf = null; - while (DACommunicator.isRunning()) { - int readSize = inputStream.read(buf); + byte[] header = new byte[MSG_HEADER_SIZE]; + byte[] payload = null; + + while (true) { +// int available = inputStream.available(); +// if (available < 20) { +// System.out.println("not available : " + available); +// continue; +// } +// System.out.println(" Available size : " + available); + int readSize = inputStream.read(header); + if (!DACommunicator.isRunning() && readSize == -1) { + // manager socket closed!! + break; + } if (readSize <= 0) { continue; } else { - System.out.println("read size : " + readSize); - readBuf = new byte[readSize]; - System.arraycopy(buf, 0, readBuf, 0, readSize); - } - - if (null == dataMessage) { - dataMessage = new BasicDataMessage(); - // ByteUtils.printByteArray(readBuf); - readBuf = dataMessage.makeData(readBuf); - } else { - if (dataMessage.getId() < 0) { - readBuf = dataMessage.makeData(readBuf); - } else { - readBuf = dataMessage.addData(readBuf); +// ByteUtils.printByteArray(header); + int id = ByteUtils.toInt(header, 0); + int seq = ByteUtils.toInt(header, 4); + + long sec = ByteUtils.toInt(header, 8); + long nano = ByteUtils.toInt(header, 12); + DATime startTime = AnalyzerManager.getProject() + .getStartTime(); + long startSec = startTime.getSec(); + long startNano = startTime.getNano(); + long resultSec = sec - startSec; + long resultNano = nano - startNano; + + long time = resultSec * 1000000 + resultNano / 1000; + int payloadSize = ByteUtils.toInt(header, + MSG_PAYLOAD_SIZE_INDEX); + try { + payload = new byte[payloadSize]; + } catch (OutOfMemoryError e) { + System.out + .println("======================== wrong read data ================================="); + System.out + .println("read data start with garbages!!!\n header log(20byte) is :"); + ByteUtils.printByteArray(header); + System.out + .println("======================== wrong read data ================================="); + } catch (NegativeArraySizeException e) { + System.out + .println("======================== wrong read data ================================="); + System.out + .println("read data start with garbages!!!\n header log(20byte) is :"); + ByteUtils.printByteArray(header); + System.out + .println("======================== wrong read data ================================="); } - } + readSize = inputStream.read(payload); - while (null != dataMessage && dataMessage.isComplete() - && DACommunicator.isRunning()) { - // dataMessage push to queue + dataMessage = new BasicDataMessage(); + dataMessage.setId(id); + dataMessage.setSeq(seq); + dataMessage.setTime(time); + dataMessage.setPayload(payload); processMessage(dataMessage); - dataMessage = null; - if (readBuf.length > 0) { - dataMessage = new BasicDataMessage(); - readBuf = dataMessage.makeData(readBuf); + if (id == AnalyzerConstants.MSG_DATA_TERMINATE) { + System.out.println("message data terminate arrived!!!"); + break; } } - System.out.println("end while"); } // end while() System.out.println("Receive thread end!!"); Display.getDefault().asyncExec(new Runnable() { @@ -323,9 +352,7 @@ public class MessageParser { private void endingSteps() { System.out.println("Ending steps!"); - // message = null; DACommunicator.setRunning(false); - // AnalyzerUtil.setRecordState(RecordStateSourceProvider.RECORD_READY); AnalyzerManager.setRunningState(false); Display.getDefault().syncExec(new Runnable() { @Override @@ -336,28 +363,29 @@ public class MessageParser { }); stopTimer(); addBufferToList(); - System.out.println("stop log process start");//$NON-NLS-1$ + System.out.println("start!! : stop log process");//$NON-NLS-1$ StopLogProcessor.runStopLogProcessThread(); - DACommunicator.closeSock(); AnalyzerUtil.executeCommand(StopHandler.ID); + AnalyzerManager.setProcessInfoArrived(false); ReplayTraceHandler.isReplay = false; ReplayTraceHandler.startTime = null; } private void processMessage(BasicDataMessage data) { - data.printMessage(); int messageId = data.getId(); LogData log = null; - switch (messageId) { case DataChannelConstants.MSG_PROCESS_INFO: // setting process info + data.printMessage(); processProcessInfo(data); break; case DataChannelConstants.MSG_TERMINATE: + data.printMessage(); processTerminate(); break; case DataChannelConstants.MSG_ERROR: + data.printMessage(); // process error message break; case DataChannelConstants.MSG_SYSTEM: @@ -367,15 +395,20 @@ public class MessageParser { case DataChannelConstants.MSG_CONTEXT_SWITCH_ENTRY: case DataChannelConstants.MSG_CONTEXT_SWITCH_EXIT: case DataChannelConstants.MSG_RECORD: - // make log - log = LogDataFactory.createInstance(data); - if (null != log) { - buffer.add(new LogContainer(log, data)); - messageCount += 1; + if (AnalyzerManager.isProcessInfoArrived()) { + data.printMessage(); + // make log + log = LogDataFactory.createInstance(data); + if (null != log) { + buffer.add(new LogContainer(log, data)); + messageCount += 1; + } } break; default: // MSG_PROBE - if (messageId > 0x3000 && messageId < 0x4000) { + if (AnalyzerManager.isProcessInfoArrived() && messageId > 0x3000 + && messageId < 0x4000) { + data.printMessage(); log = LogDataFactory.createInstance(data); if (null != log) { buffer.add(new LogContainer(log, data)); @@ -391,147 +424,4 @@ public class MessageParser { } } - private void parseLog(List columnTypes, byte[] payload, - List output) { - int type = -1; - int from = 0; - int size = columnTypes.size(); - for (int i = 0; i < size; i++) { - type = columnTypes.get(i); - switch (type) { - case LogFormat.I: - int iv = ByteUtils.toInt(payload, from); - output.add(Integer.toString(iv)); - from += Integer.SIZE / Byte.SIZE; - break; - case LogFormat.L: - long lv = ByteUtils.toLong(payload, from); - output.add(Long.toString(lv)); - from += Long.SIZE / Byte.SIZE; - break; - case LogFormat.F: - float fv = ByteUtils.toFloat(payload, from); - output.add(Float.toString(fv)); - from += Float.SIZE / Byte.SIZE; - break; - case LogFormat.D: - double dv = ByteUtils.toDouble(payload, from); - output.add(Double.toString(dv)); - from += Double.SIZE / Byte.SIZE; - break; - case LogFormat.S: - int to = 0; - byte b = -1; - for (int ii = from; ii < payload.length; ii++) { - b = payload[ii]; - if (b == 0) { - to = ++ii; - break; - } - to = ii; - } - byte[] str = new byte[to - from]; - System.arraycopy(payload, from, str, 0, to - from); - from = to; - output.add(new String(str)); - break; - - case LogFormat.CL: - case LogFormat.CF: - // CPU load : float * cpu count - // output log ex: "float, float, float" - split char is "," - int cpuCount = DACommunicator.getSelectedDevice() - .getTargetInfo().getCpuCount(); - StringBuffer sbuf = new StringBuffer(); - for (int ii = 0; ii < cpuCount; ii++) { - float f = ByteUtils.toFloat(payload, from); - sbuf.append(f); - from += Float.SIZE / Byte.SIZE; - if (ii + 1 != cpuCount) { - sbuf.append(','); - } - } - output.add(sbuf.toString()); - break; - case LogFormat.TL: - // Thread load : (int pid, float load) * thread count - case LogFormat.PL: - // Process load : (int pid, float load) * process count - int backPos = from - Integer.SIZE / Byte.SIZE; - int count = ByteUtils.toInt(payload, backPos); - StringBuffer outBuf = new StringBuffer(); - for (int ii = 0; ii < count; ii++) { - int tid = ByteUtils.toInt(payload, from); - from += Integer.SIZE / Byte.SIZE; - outBuf.append(tid).append('|'); - float f = ByteUtils.toFloat(payload, from); - outBuf.append(f); - from += Float.SIZE / Byte.SIZE; - if (ii + 1 != count) { - outBuf.append(','); - } - } - output.add(outBuf.toString()); - break; - case LogFormat.A: - int countOfArgs = ByteUtils.toInt(payload, from); - from += Integer.SIZE / Byte.SIZE; - StringBuffer buf = new StringBuffer(); - for (int ii = 0; ii < countOfArgs; ii++) { - char c = (char) payload[from]; - from += 1; - switch (c) { - case 'c': - buf.append((payload[from])); - from += 1; - break; - case 'd': - int iValue = ByteUtils.toInt(payload, from); - buf.append(iValue); - from += Integer.SIZE / Byte.SIZE; - break; - case 'x': - long lValue = ByteUtils.toLong(payload, from); - buf.append(lValue); - from += Long.SIZE / Byte.SIZE; - break; - case 'p': - long pValue = ByteUtils.toLong(payload, from); - buf.append(Long.toHexString(pValue)); - from += Long.SIZE / Byte.SIZE; - break; - case 'f': - float fValue = ByteUtils.toFloat(payload, from); - buf.append(fValue); - from += Float.SIZE / Byte.SIZE; - break; - case 'w': - double dValue = ByteUtils.toDouble(payload, from); - buf.append(dValue); - from += Double.SIZE / Byte.SIZE; - break; - case 's': - for (int iii = from; iii < payload.length; iii++) { - if (payload[iii] != 0) { - buf.append((char) payload[iii]); - } else { - from = iii + 1; - } - } - break; - default: - break; - } - if (ii + 1 != countOfArgs) { - buf.append(','); - } - } - output.add(buf.toString()); - case LogFormat.T: - // not used for log parsing - break; - default: - } - } - } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java index f86ef5f..1641951 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/SWAPLogParser.java @@ -63,8 +63,6 @@ public class SWAPLogParser implements Runnable { private static boolean dropCallTraceLog = false; private static LogQueue logQueue = null; - private static boolean isLogParsingComplete = false; - private int SMALL_IMG_WIDTH = 40; private int SMALL_IMG_HEIGHT = 66; @@ -77,7 +75,6 @@ public class SWAPLogParser implements Runnable { public static void clear() { stopLogParser(); getLogQueue().clear(); - isLogParsingComplete = false; } public static LogQueue getLogQueue() { @@ -95,15 +92,8 @@ public class SWAPLogParser implements Runnable { return dropCallTraceLog; } - public static boolean isLogParsingComplete() { - return isLogParsingComplete; - } - - public static void setLogParsingComplete(boolean complete) { - isLogParsingComplete = complete; - } - public static void startLogParser() { + getLogQueue().clear(); if (null == logParser || !logParser.isAlive()) { logParser = new Thread(null, new SWAPLogParser(), AnalyzerConstants.LOG_QUEUE_OBSERVING_THREAD); @@ -129,7 +119,7 @@ public class SWAPLogParser implements Runnable { /*** log parsing thread ***/ @Override public void run() { - isLogParsingComplete = false; + AnalyzerManager.setLogParsingComplete(false); LogQueue logQueue = getLogQueue(); while (!AnalyzerManager.isExit()) { List logs = logQueue.getFirst(); @@ -141,7 +131,7 @@ public class SWAPLogParser implements Runnable { /* log for debug */ System.out.println("log parsing thread end!!"); //$NON-NLS-1$ - isLogParsingComplete = true; + AnalyzerManager.setLogParsingComplete(true); if (!AnalyzerManager.isExit()) { ToolbarArea.getInstance().stopTimer(); @@ -151,7 +141,7 @@ public class SWAPLogParser implements Runnable { private void logSlicing(List logLumb) { int size = logLumb.size(); LogPackage logPack = new LogPackage(); - + System.out.println(" log lumb size " + size ); for (int i = 0; i < size; i++) { if (null == logLumb.get(i)) { continue; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java index 3f9f67b..e93cab7 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/control/BinaryInfo.java @@ -5,7 +5,7 @@ import org.tizen.dynamicanalyzer.swap.model.SWAPModel; public class BinaryInfo implements SWAPModel { private int type = 0; - private String path = null; + private String sourcePath = null; public int getType() { return type; @@ -16,16 +16,16 @@ public class BinaryInfo implements SWAPModel { } public String getPath() { - return path; + return sourcePath; } public void setPath(String path) { - this.path = path; + this.sourcePath = path; } @Override public byte[] getByteValue() { - return ByteUtils.concatByteArray(type, path); + return ByteUtils.concatByteArray(type, sourcePath); } @Override diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java index 8da666c..e9afc5b 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/model/data/BasicDataMessage.java @@ -19,6 +19,8 @@ public class BasicDataMessage { public static final int HEADER_SIZE = ID_SIZE + SEQ_SIZE + TIME_SIZE + PAYLOAD_LENGTH_SIZE; + private boolean PRINT_DATA = true; + protected int id = -1; protected int seq = -1; protected long time = -1; @@ -34,117 +36,112 @@ public class BasicDataMessage { // private byte[] emptyBuffer = null; private int bufferStart = 0; - public byte[] makeData(byte[] input) { - - if (null == input || input.length <= 0) { - return input; - } - bufferStart = 0; - // header is parsing? - if (id < 0) { // header is not parsing - if (reqSize == 0) { - reqSize = HEADER_SIZE; - } - - int copySize = (reqSize < input.length) ? reqSize : input.length; - System.arraycopy(input, 0, headerBuffer, HEADER_SIZE - reqSize, - copySize); - if (input.length < reqSize) { - reqSize = reqSize - input.length; - return new byte[0]; - } else { - bufferStart = reqSize; - reqSize = 0; - } - // parsing header - // ByteUtils.printByteArray(headerBuffer); - id = ByteUtils.toInt(headerBuffer); - seq = ByteUtils.toInt(headerBuffer, ID_SIZE); - long sec = ByteUtils.toInt(headerBuffer, ID_SIZE + SEQ_SIZE); - long nano = ByteUtils.toInt(headerBuffer, ID_SIZE + SEQ_SIZE - + INT_SIZE); - - // long startSec = AnalyzerManager.getProject().getStartTime() - // .getSec(); - // long startNano = AnalyzerManager.getProject().getStartTime() - // .getNano(); - - DATime startTime = AnalyzerManager.getProject().getStartTime(); - long startSec = AnalyzerManager.getProject().getStartTime() - .getSec(); - long startNano = AnalyzerManager.getProject().getStartTime() - .getNano(); - - if (0 == startSec && 0 == startNano) { - startTime.setSec(sec); - startTime.setNano(nano); - AnalyzerManager.getProject().setStartTime(startTime); - startSec = sec; - startNano = nano; - } - - long resultSec = sec - startSec; - long resultNano = nano - startNano; - - time = resultSec * 1000000 + resultNano / 1000; - - payloadSize = ByteUtils.toInt(headerBuffer, ID_SIZE + SEQ_SIZE - + TIME_SIZE); - // clear headerBuffer - System.arraycopy(emptyHeaderBuffer, 0, headerBuffer, 0, HEADER_SIZE); - // input - headerBuffer = buffer - payload = new byte[payloadSize]; - // System.out.println("DEBUG - id :" + String.format("%4x", id) - // + " seq :" + seq + " time :" + time - // + " payload size : " + payloadSize + " request size :" - // + reqSize + " input length :" + input.length); - } - - reqSize = (0 == reqSize) ? payloadSize : reqSize; - - int cpSize = (input.length - bufferStart > reqSize) ? reqSize - : input.length - bufferStart; - System.arraycopy(input, bufferStart, payload, payloadSize - reqSize, - cpSize); - if (reqSize > cpSize) { - reqSize = reqSize - cpSize; - return new byte[0]; - } else { - int retIndex = bufferStart + reqSize; - byte[] ret = new byte[input.length - retIndex]; - System.arraycopy(input, retIndex, ret, 0, input.length - retIndex); - complete = true; - return ret; - } - } - - public byte[] addData(byte[] input) { - // int remainSize = (payloadSize - payload.length > 0) ? payloadSize - // - payload.length : DataChannelConstants.BUFFER_SIZE; - - int cpSize = (reqSize > input.length) ? input.length : reqSize; - int cpIndex = payloadSize - reqSize; - - System.arraycopy(input, 0, payload, cpIndex, cpSize); - - byte[] ret = new byte[0]; - if (reqSize > input.length) { - reqSize = reqSize - input.length; - } else { - ret = new byte[input.length - reqSize]; - System.arraycopy(input, reqSize, ret, 0, ret.length); - complete = true; - } - - // byte[] ret = (remainSize == DataChannelConstants.BUFFER_SIZE) ? null - // : new byte[input.length - remainSize]; - // if (null != ret) { - // System.arraycopy(input, remainSize, ret, 0, input.length - // - remainSize); - // } - // complete = (payloadSize == payload.length) ? true : false; - return ret; - } +// public byte[] makeData(byte[] input) { + +// if (null == input || input.length <= 0) { +// return input; +// } +// bufferStart = 0; +// // header is parsing? +// if (id < 0) { // header is not parsing +// if (reqSize == 0) { +// reqSize = HEADER_SIZE; +// } +// +// int copySize = (reqSize < input.length) ? reqSize : input.length; +// System.arraycopy(input, 0, headerBuffer, HEADER_SIZE - reqSize, +// copySize); +// if (input.length < reqSize) { +// reqSize = reqSize - input.length; +// return new byte[0]; +// } else { +// bufferStart = reqSize; +// reqSize = 0; +// } +// // parsing header +// // ByteUtils.printByteArray(headerBuffer); +// id = ByteUtils.toInt(headerBuffer); +// seq = ByteUtils.toInt(headerBuffer, ID_SIZE); +// long sec = ByteUtils.toInt(headerBuffer, ID_SIZE + SEQ_SIZE); +// long nano = ByteUtils.toInt(headerBuffer, ID_SIZE + SEQ_SIZE +// + INT_SIZE); +// +// DATime startTime = AnalyzerManager.getProject().getStartTime(); +// long startSec = startTime.getSec(); +// long startNano = startTime.getNano(); +// +// // if (0 == startSec && 0 == startNano) { +// // startTime.setSec(sec); +// // startTime.setNano(nano); +// // AnalyzerManager.getProject().setStartTime(startTime); +// // startSec = sec; +// // startNano = nano; +// // } +// +// long resultSec = sec - startSec; +// long resultNano = nano - startNano; +// +// time = resultSec * 1000000 + resultNano / 1000; +// +// payloadSize = ByteUtils.toInt(headerBuffer, ID_SIZE + SEQ_SIZE +// + TIME_SIZE); +// // clear headerBuffer +// System.arraycopy(emptyHeaderBuffer, 0, headerBuffer, 0, HEADER_SIZE); +// // input - headerBuffer = buffer +// payload = new byte[payloadSize]; +// // System.out.println("DEBUG - id :" + String.format("%4x", id) +// // + " seq :" + seq + " time :" + time +// // + " payload size : " + payloadSize + " request size :" +// // + reqSize + " input length :" + input.length); +// } +// +// reqSize = (0 == reqSize) ? payloadSize : reqSize; +// +// int cpSize = (input.length - bufferStart > reqSize) ? reqSize +// : input.length - bufferStart; +// System.arraycopy(input, bufferStart, payload, payloadSize - reqSize, +// cpSize); +// if (reqSize > cpSize) { +// reqSize = reqSize - cpSize; +// return new byte[0]; +// } else { +// int retIndex = bufferStart + reqSize; +// byte[] ret = new byte[input.length - retIndex]; +// System.arraycopy(input, retIndex, ret, 0, input.length - retIndex); +// complete = true; +// return ret; +// } + + +// } + +// public byte[] addData(byte[] input) { +// // int remainSize = (payloadSize - payload.length > 0) ? payloadSize +// // - payload.length : DataChannelConstants.BUFFER_SIZE; +// +// int cpSize = (reqSize > input.length) ? input.length : reqSize; +// int cpIndex = payloadSize - reqSize; +// +// System.arraycopy(input, 0, payload, cpIndex, cpSize); +// +// byte[] ret = new byte[0]; +// if (reqSize > input.length) { +// reqSize = reqSize - input.length; +// } else { +// ret = new byte[input.length - reqSize]; +// System.arraycopy(input, reqSize, ret, 0, ret.length); +// complete = true; +// } +// +// // byte[] ret = (remainSize == DataChannelConstants.BUFFER_SIZE) ? null +// // : new byte[input.length - remainSize]; +// // if (null != ret) { +// // System.arraycopy(input, remainSize, ret, 0, input.length +// // - remainSize); +// // } +// // complete = (payloadSize == payload.length) ? true : false; +// return ret; +// } public int getId() { return id; @@ -170,13 +167,13 @@ public class BasicDataMessage { this.time = time; } - public int getPayloadSize() { - return payloadSize; - } +// public int getPayloadSize() { +// return payloadSize; +// } - public void setPayloadSize(int payloadSize) { - this.payloadSize = payloadSize; - } +// public void setPayloadSize(int payloadSize) { +// this.payloadSize = payloadSize; +// } public byte[] getPayload() { return payload; @@ -233,7 +230,7 @@ public class BasicDataMessage { System.arraycopy(input, 0, newInput, 0, input.length); input = null; payload = AnalyzerUtil.makeByteArray(id, newInput); - payloadSize = payload.length; +// payloadSize = payload.length; } // for lower version @@ -293,9 +290,11 @@ public class BasicDataMessage { } public void printMessage() { - String strId = String.format("%4x", id); - System.out.println("Message [id : " + strId + "] [seq :" + seq - + "] [ Time : " + time + " ms]"); - ByteUtils.printByteArray(payload); + if (PRINT_DATA) { + String strId = String.format("%4x", id); + System.out.println("Message [id : " + strId + "] [seq :" + seq + + "] [ Time : " + time + " ms]"); + ByteUtils.printByteArray(payload); + } } } 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 9509a3b..7b7187e 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 @@ -32,7 +32,6 @@ import java.util.List; import org.tizen.dynamicanalyzer.common.AnalyzerConstants; import org.tizen.dynamicanalyzer.common.AnalyzerManager; -import org.tizen.dynamicanalyzer.logparser.LogParser; import org.tizen.dynamicanalyzer.nl.SummaryLabels; import org.tizen.dynamicanalyzer.swap.model.probe2.LogData; import org.tizen.dynamicanalyzer.swap.model.probe2.ProfileData; @@ -82,7 +81,7 @@ public class FunctionUsageProfiler implements Runnable { private synchronized List getFirstSample() { while (isSampleInputEmpty()) { - if (LogParser.isLogParsingComplete()) { + if (AnalyzerManager.isLogParsingComplete()) { return null; } try { diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java index 3791572..7ce8eaa 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/ToolbarArea.java @@ -28,6 +28,7 @@ package org.tizen.dynamicanalyzer.ui.toolbar; import java.io.File; +import java.io.IOException; import java.util.HashMap; import java.util.List; @@ -59,6 +60,7 @@ import org.tizen.dynamicanalyzer.resources.ColorResources; import org.tizen.dynamicanalyzer.resources.FontResources; import org.tizen.dynamicanalyzer.resources.ImageResources; import org.tizen.dynamicanalyzer.shortcut.ShortCutManager; +import org.tizen.dynamicanalyzer.swap.model.ByteUtils; import org.tizen.dynamicanalyzer.ui.timeline.TimelinePage; import org.tizen.dynamicanalyzer.ui.toolbar.configuration.ConfigurationDialog; import org.tizen.dynamicanalyzer.ui.toolbar.opentrace.OpenTraceDialog; @@ -296,8 +298,8 @@ public class ToolbarArea { } if (null != DACommunicator.getSelectedDevice()) { -// AnalyzerUtil -// .setRecordState(RecordStateSourceProvider.RECORD_READY); + // AnalyzerUtil + // .setRecordState(RecordStateSourceProvider.RECORD_READY); AnalyzerManager.setRunningState(false); startButton.setButtonEnabled(true); setRepalyButtonEnable(true); @@ -402,22 +404,33 @@ public class ToolbarArea { .addClickListener(new DACustomButtonClickEventListener() { @Override public void handleClickEvent(DACustomButton button) { + + try { + byte[] testbuf = new byte[1024]; + DACommunicator.getSelectedDevice().getDataSock() + .getInputStream().read(testbuf); + ByteUtils.printByteArray(testbuf); + } catch (IOException e) { + e.printStackTrace(); + } // TODO : use for test code... -// String path = "/home/casval/work/testApp/DATizenTestApp/Dynamic Analyzer/DATizenTestApp.exe"; -// ElfSymbolExtractManager.getInstance().makeSymbol(path); -// Long[] result = ElfSymbolExtractManager.getInstance() -// .getSymbolAddress(); -// -// HashMap symbolMap = ElfSymbolExtractManager -// .getInstance().symbolMap(); -// List symbols = new ArrayList(); -// symbols.addAll(symbolMap.values()); -// -// for (String s : symbols) { -// String symbol = SymbolManager -// .demanglingFunctionName(s); -// System.out.println("test : " + symbol); -// } + // String path = + // "/home/casval/work/testApp/DATizenTestApp/Dynamic Analyzer/DATizenTestApp.exe"; + // ElfSymbolExtractManager.getInstance().makeSymbol(path); + // Long[] result = ElfSymbolExtractManager.getInstance() + // .getSymbolAddress(); + // + // HashMap symbolMap = + // ElfSymbolExtractManager + // .getInstance().symbolMap(); + // List symbols = new ArrayList(); + // symbols.addAll(symbolMap.values()); + // + // for (String s : symbols) { + // String symbol = SymbolManager + // .demanglingFunctionName(s); + // System.out.println("test : " + symbol); + // } // DACommunicator.getLocalhost(); // System.out.println(CommonConstants.LOCAL_HOST); @@ -493,7 +506,7 @@ public class ToolbarArea { return; } AnalyzerUtil.changePage(TimelinePage.ID); -// AnalyzerUtil.setRecordState(RecordStateSourceProvider.RECORD_RECORDING); + // AnalyzerUtil.setRecordState(RecordStateSourceProvider.RECORD_RECORDING); AnalyzerManager.setRunningState(true); TraceStartStopThread.runStartStopThread(); } @@ -501,7 +514,7 @@ public class ToolbarArea { public void stopTrace() { ShortCutManager.getInstance().setEnabled(false); AnalyzerManager.getProject().setStopTime(getTime()); -// AnalyzerUtil.setRecordState(RecordStateSourceProvider.RECORD_READY); + // AnalyzerUtil.setRecordState(RecordStateSourceProvider.RECORD_READY); AnalyzerManager.setRunningState(false); TraceStartStopThread.runStartStopThread(); } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java index 326a76c..ac8e9cf 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/OpenTraceInputReader.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/opentrace/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.logparser.LogParser; import org.tizen.dynamicanalyzer.project.Project; import org.tizen.dynamicanalyzer.sql.SqlManager; import org.tizen.dynamicanalyzer.swap.logparser.LogPackage; @@ -76,7 +75,7 @@ public class OpenTraceInputReader implements Runnable { @Override public void run() { - LogParser.setLogParsingComplete(false); + AnalyzerManager.setLogParsingComplete(false); Project p = AnalyzerManager.getProject(); long last = p.getLastLogNum(AnalyzerConstants.MSG_PROBE_FILE); createPackage(last, AnalyzerConstants.MSG_PROBE_FILE); @@ -88,7 +87,7 @@ public class OpenTraceInputReader implements Runnable { createPackage(last, AnalyzerConstants.MSG_DATA_SAMPLE); System.out.println("input reader complete"); //$NON-NLS-1$ - LogParser.setLogParsingComplete(true); + AnalyzerManager.setLogParsingComplete(true); // end } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/RecordingQueue.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/RecordingQueue.java index a9f2de3..4512208 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/RecordingQueue.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/uirecorder/RecordingQueue.java @@ -3,7 +3,7 @@ package org.tizen.dynamicanalyzer.uirecorder; import java.util.ArrayList; import java.util.List; -import org.tizen.dynamicanalyzer.logparser.LogParser; +import org.tizen.dynamicanalyzer.common.AnalyzerManager; public class RecordingQueue { private List data = null; @@ -11,10 +11,10 @@ public class RecordingQueue { public RecordingQueue() { data = new ArrayList(); } - + public synchronized String getFirst() { while (isEmpty()) { - if (LogParser.isLogParsingComplete()) { + if (AnalyzerManager.isLogParsingComplete()) { return null; } try { -- 2.7.4