From 21a7f7355c60ee48036ae9bd20c9af54e0f2cf34 Mon Sep 17 00:00:00 2001 From: "wonhyoung2.park" Date: Wed, 16 Nov 2011 14:37:59 +0900 Subject: [PATCH] [TITLE] Profiler sdb apply [Type] [Module] [Priority] [CQ#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- .../META-INF/MANIFEST.MF | 3 +- .../linuxplatform/oprofile/core/OprofileComm.java | 46 +- .../processor/checkevent/CheckEventsProcessor.java | 48 +- .../checkkernel/CheckKernelProcessor.java | 43 +- .../processor/eventinfo/EventListProcessor.java | 167 +++--- .../core/processor/eventinfo/OpInfoProcessor.java | 79 ++- .../processor/modeldata/ModelDataProcessor.java | 17 +- .../core/processor/sessions/SessionsProcessor.java | 24 +- .../core/provider/OpcontrolDataProvider.java | 24 +- .../linuxtools/oprofile/core/CommandManager.java | 190 +++++++ .../linuxtools/oprofile/core/PathParser.java | 13 - .../core/linux/LinuxOpcontrolProvider.java | 361 +++++++------ .../oprofile/core/linux/OpxmlRunner.java | 12 +- .../META-INF/MANIFEST.MF | 2 +- .../oprofile/launch/SLPOprofileLaunchDelegate.java | 445 +++++++++------- .../NormalOprofileLaunchConfigurationTabGroup.java | 7 +- .../META-INF/MANIFEST.MF | 3 +- .../listen/OProfileTargetConnectionListener.java | 38 +- .../oprofile/launch/listen/OprofileStartup.java | 5 +- .../META-INF/MANIFEST.MF | 4 +- .../linuxtools/valgrind/launch/CommandManager.java | 147 ++++++ .../linuxtools/valgrind/launch/PathParser.java | 13 - .../valgrind/launch/SLPValgrindLaunchDelegate.java | 422 +++++++++------ .../valgrind/launch/IValgrindLaunchDelegate.java | 4 +- .../valgrind/launch/ValgrindOptionsTab.java | 587 ++++++++++++--------- .../META-INF/MANIFEST.MF | 2 +- .../valgrind/massif/MassifLaunchDelegate.java | 159 +++--- .../META-INF/MANIFEST.MF | 4 +- .../valgrind/memcheck/MemcheckLaunchDelegate.java | 38 +- 29 files changed, 1714 insertions(+), 1193 deletions(-) create mode 100644 org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/CommandManager.java delete mode 100644 org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/PathParser.java create mode 100644 org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/CommandManager.java delete mode 100644 org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/PathParser.java diff --git a/org.eclipse.linuxtools.oprofile.core/META-INF/MANIFEST.MF b/org.eclipse.linuxtools.oprofile.core/META-INF/MANIFEST.MF index 6671b07..2fab385 100644 --- a/org.eclipse.linuxtools.oprofile.core/META-INF/MANIFEST.MF +++ b/org.eclipse.linuxtools.oprofile.core/META-INF/MANIFEST.MF @@ -7,7 +7,8 @@ Bundle-Activator: org.eclipse.linuxtools.oprofile.core.OprofileCorePlugin Bundle-Vendor: Samsung Electronics Require-Bundle: org.eclipse.core.runtime;bundle-version="3.4.0", org.eclipse.ui;bundle-version="3.4.0", - com.samsung.slp.common.conn;bundle-version="1.0.0" + com.samsung.slp.common.connection;bundle-version="1.0.0", + com.samsung.slp.common;bundle-version="1.3.20" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy Export-Package: com.samsung.linuxplatform.oprofile.core, diff --git a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/OprofileComm.java b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/OprofileComm.java index f1863df..18b8bce 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/OprofileComm.java +++ b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/OprofileComm.java @@ -24,7 +24,6 @@ package com.samsung.linuxplatform.oprofile.core; import java.util.ArrayList; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; @@ -35,11 +34,7 @@ import org.eclipse.linuxtools.oprofile.core.model.OpModelRoot; import org.eclipse.swt.widgets.Display; import com.samsung.linuxplatform.oprofile.core.provider.OpcontrolDataProvider; -import com.samsung.slp.common.conn.device.DeviceManager; -import com.samsung.slp.common.conn.machine.DeviceMachine; -import com.samsung.slp.common.conn.machine.IMachine; -import com.samsung.slp.common.conn.session.ISession; -import com.samsung.slp.common.conn.session.SessionManager; +import com.samsung.slp.common.connection.ConnectionPlugin; public abstract class OprofileComm { @@ -127,30 +122,27 @@ public abstract class OprofileComm { return sb.toString(); } - // changed by greatim 2011.06.01 for fresh ide - public static ISession getSession() throws InterruptedException{ - ISession session = null; - try { - DeviceMachine selected = DeviceManager.getSelectedDevice(); - if(selected.getMachineType().equals(IMachine.VIRTUAL_DEVICE)) - session = SessionManager.getSession("OPROFILER_CONTROL_VIRTUAL", selected, new NullProgressMonitor()); - else - session = SessionManager.getSession("OPROFILER_CONTROL_REAL", selected, new NullProgressMonitor()); - } catch (Exception e) { - - } - return session; - } +// // changed by greatim 2011.06.01 for fresh ide +// public static ISession getSession() throws InterruptedException{ +// ISession session = null; +// try { +// DeviceMachine selected = DeviceManager.getSelectedDevice(); +// if(selected.getMachineType().equals(IMachine.VIRTUAL_DEVICE)) +// session = SessionManager.getSession("OPROFILER_CONTROL_VIRTUAL", selected, new NullProgressMonitor()); +// else +// session = SessionManager.getSession("OPROFILER_CONTROL_REAL", selected, new NullProgressMonitor()); +// } catch (Exception e) { +// +// } +// return session; +// } // changed by greatim 2011.06.01 for fresh ide public static boolean checkTarget() { - boolean reachable = false; - try { - reachable = DeviceManager.getSelectedDevice().isReachable(); - } catch (Exception e) { - + if(null != ConnectionPlugin.getDefault().getCurrentDevice()){ + return true; } - - return reachable; + else + return false; } } diff --git a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkevent/CheckEventsProcessor.java b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkevent/CheckEventsProcessor.java index 2d09683..af758b7 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkevent/CheckEventsProcessor.java +++ b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkevent/CheckEventsProcessor.java @@ -20,48 +20,38 @@ package com.samsung.linuxplatform.oprofile.core.processor.checkevent; -import org.eclipse.linuxtools.oprofile.core.PathParser; - import com.samsung.linuxplatform.oprofile.core.OprofileCommonConstants; -import com.samsung.slp.common.conn.session.ISession; +import org.eclipse.linuxtools.oprofile.core.CommandManager; +public class CheckEventsProcessor { -public class CheckEventsProcessor{ - - private ISession session; - - public CheckEventsProcessor(ISession session) - throws InterruptedException{ - if(session==null) - throw new InterruptedException("Target isn't connected or valid"); + private final String COMMAND_CHECK_EVENT = OprofileCommonConstants.COMMAND_OPHELP + + " -e"; + + public void parse(String event, int count, int unitmask, int[] result) + throws InterruptedException { + String[] resultStr = null; - this.session = session; - } - - private final String COMMAND_CHECK_EVENT = OprofileCommonConstants.COMMAND_OPHELP+" -e"; - - public void parse(String event, int count, int unitmask, int[] result) - throws InterruptedException{ - String resultStr= null; - - try { - resultStr = session.run(COMMAND_CHECK_EVENT+" "+event+":"+count+":"+unitmask, null); - resultStr = PathParser.pathParsing(resultStr); + // resultStr = + // session.run(COMMAND_CHECK_EVENT+" "+event+":"+count+":"+unitmask, + // null); + resultStr = CommandManager + .runCommandReturningResultArray(COMMAND_CHECK_EVENT + " " + + event + ":" + count + ":" + unitmask); } catch (Exception e) { throw new InterruptedException(); } - - if(resultStr!=null&&resultStr.trim().length()>0){ + + if (resultStr != null && resultStr.length > 0 + && resultStr[0].trim().length() > 0) { try { - result[0] = Integer.parseInt(resultStr.trim()); + result[0] = Integer.parseInt(resultStr[0].trim()); } catch (NumberFormatException e) { result[0] = -1; } } - } - - + } diff --git a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkkernel/CheckKernelProcessor.java b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkkernel/CheckKernelProcessor.java index a261522..6f1db55 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkkernel/CheckKernelProcessor.java +++ b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/checkkernel/CheckKernelProcessor.java @@ -20,43 +20,32 @@ package com.samsung.linuxplatform.oprofile.core.processor.checkkernel; -import org.eclipse.linuxtools.oprofile.core.PathParser; +import org.eclipse.linuxtools.oprofile.core.CommandManager; import com.samsung.linuxplatform.oprofile.core.OprofileCommonConstants; -import com.samsung.slp.common.conn.session.ISession; +public class CheckKernelProcessor { -public class CheckKernelProcessor{ - - private ISession session; - - public CheckKernelProcessor(ISession session) - throws InterruptedException{ - if(session==null) - throw new InterruptedException("Target isn't connected or valid"); + private final String COMMAND_CHECK_KERNEL = "cat " + + OprofileCommonConstants.DEV_CPU_TYPE + " 2> /dev/null; echo"; + + public void parse(String[] result) throws InterruptedException { + String[] resultStr = null; - this.session = session; - } - - private final String COMMAND_CHECK_KERNEL = "cat "+OprofileCommonConstants.DEV_CPU_TYPE+" 2> /dev/null; echo"; - - public void parse(String[] result) - throws InterruptedException{ - String resultStr= null; - try { - resultStr = session.run(COMMAND_CHECK_KERNEL, null); - resultStr = PathParser.pathParsing(resultStr); + // resultStr = session.run(COMMAND_CHECK_KERNEL, null); + resultStr = CommandManager + .runCommandReturningResultArray(COMMAND_CHECK_KERNEL); + } catch (Exception e) { throw new InterruptedException(); } - - if(resultStr!=null&&resultStr.trim().length()>0){ - result[0] = resultStr.trim(); + + if (resultStr != null && resultStr.length > 0 + && resultStr[0].trim().length() > 0) { + result[0] = resultStr[0].trim(); } - } - - + } diff --git a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/eventinfo/EventListProcessor.java b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/eventinfo/EventListProcessor.java index 4dd34e3..2d10414 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/eventinfo/EventListProcessor.java +++ b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/eventinfo/EventListProcessor.java @@ -22,140 +22,138 @@ package com.samsung.linuxplatform.oprofile.core.processor.eventinfo; import java.util.ArrayList; -import org.eclipse.linuxtools.oprofile.core.PathParser; +import org.eclipse.linuxtools.oprofile.core.CommandManager; import org.eclipse.linuxtools.oprofile.core.daemon.OpEvent; import org.eclipse.linuxtools.oprofile.core.daemon.OpInfo; import org.eclipse.linuxtools.oprofile.core.daemon.OpUnitMask; import org.eclipse.linuxtools.oprofile.core.daemon.OpUnitMask.MaskInfo; import com.samsung.linuxplatform.oprofile.core.OprofileCommonConstants; -import com.samsung.slp.common.conn.session.ISession; - -public class EventListProcessor{ - private ISession session; +public class EventListProcessor { private OpInfo info; - private ArrayList[] eventList; - - public EventListProcessor(ISession session, OpInfo info) throws InterruptedException{ - if(session==null) - throw new InterruptedException("Target is not connected or invalid"); - + private ArrayList[] eventList; + + public EventListProcessor(OpInfo info) throws InterruptedException { this.info = info; - this.session = session; - initializeEventList(); } - + private void initializeEventList() { eventList = new ArrayList[info.getNrCounters()]; - for(int i=0;i(); } } - private static final String COMMAND_EVENT_LIST = OprofileCommonConstants.COMMAND_OPCONTROL+" -l 2> /dev/null"; + private static final String COMMAND_EVENT_LIST = OprofileCommonConstants.COMMAND_OPCONTROL + + " -l 2> /dev/null"; private static final String EVENT_PATTERN = "^[A-Z1-9]+.*\\(counter: \\d+.*\\)$"; - private static final String EVENT_DETAIL_PATTERN = "^\\s+.*\\(min count: \\d+\\).*"; - private static final String UNIT_MASK_PATTERN = "^\\s+Unit masks \\(default: 0x..\\)$"; - private static final String MASK_INFO_PATTERN = "^\\s+0x..: .*"; - - public void parse() throws InterruptedException{ - String resultStr= null; - + //private static final String EVENT_DETAIL_PATTERN = "^\\s+.*\\(min count: \\d+\\).*"; + private static final String EVENT_DETAIL_PATTERN = ".*\\(min count: \\d+\\).*"; + private static final String UNIT_MASK_PATTERN = "Unit masks \\(default: 0x..\\)$"; + private static final String MASK_INFO_PATTERN = "0x..: .*"; + + public void parse() throws InterruptedException { + String resultStr = null; + try { - resultStr = session.run(COMMAND_EVENT_LIST, null); - resultStr = PathParser.pathParsing(resultStr); + // resultStr = session.run(COMMAND_EVENT_LIST, null); + resultStr = CommandManager + .runCommandReturningResult(COMMAND_EVENT_LIST); } catch (Exception e) { throw new InterruptedException(); } - - if(resultStr==null||resultStr.trim().length()==0) + + if (resultStr == null || resultStr.trim().length() == 0) return; - + String eventStr[] = resultStr.split("\r?\n"); OpEvent event = null; OpUnitMask unitMask = null; ArrayList maskList = null; - + boolean isDummy = true; boolean isContinued = false; String str = null; String prevStr = null; - - for(int i=0;i(); - }else if(str.matches(MASK_INFO_PATTERN)){ + } else if (str.matches(MASK_INFO_PATTERN)) { addMaskInfo(maskList, str); - }else{ + } else { isContinued = true; prevStr = eventStr[i]; } - + } - + setOpInfoEventList(); } - private void setOpUnitMaskList(OpUnitMask unitMask, ArrayList maskList) { - if(unitMask==null|| (unitMask!=null&&maskList==null) ) + private void setOpUnitMaskList(OpUnitMask unitMask, + ArrayList maskList) { + if (unitMask == null || (unitMask != null && maskList == null)) return; - - unitMask._setMaskDescriptions(maskList.toArray(new MaskInfo[maskList.size()])); - + + unitMask._setMaskDescriptions(maskList.toArray(new MaskInfo[maskList + .size()])); + boolean hasSameValue = false; - for(int i=0;i maskList, String str) { int idx = str.indexOf(":"); - - String desc = str.substring(idx+1,str.length()).trim(); - int val = Integer.parseInt(str.substring(2,idx).trim(),16); - + + String desc = str.substring(idx + 1, str.length()).trim(); + int val = Integer.parseInt(str.substring(2, idx).trim(), 16); + MaskInfo maskInfo = new MaskInfo(); maskInfo.description = desc; maskInfo.value = val; - + maskList.add(maskInfo); - } - - + } + private void setOpInfoEventList() { - for(int i=0;i5){ -// System.out.println("######## opcontrol -l : "+resultStr); - int cnt = resultStr.split("\r?\n").length; + + if (resultStr != null && resultStr.length >1) { + // System.out.println("######## opcontrol -l : "+resultStr); + //int cnt = resultStr.split("\r?\n").length; + int cnt = resultStr.length; info._setNrCounters(cnt); info._setTimerMode(false); - }else{ -// System.out.println("######## opcontrol -l : no data"); + } else { + // System.out.println("######## opcontrol -l : no data"); info._setNrCounters(0); info._setTimerMode(true); } - - //FIXME:jinu removed at 20090620 - //this logic isn't exactly matched with real result + + // FIXME:jinu removed at 20090620 + // this logic isn't exactly matched with real result /* - command = "grep \"cpu MHz\" /proc/cpuinfo"; - - try { - resultStr = session.run(command); - } catch (Exception e) { - throw new InterruptedException(); - } - - if(resultStr!=null&&resultStr.trim().length()>0){ - String speed = resultStr.split(lineSeparator)[0].split(":")[1].trim(); - info._setCPUSpeed(Double.parseDouble(speed)); - }else{ - info._setCPUSpeed(0); - } - */ - + * command = "grep \"cpu MHz\" /proc/cpuinfo"; + * + * try { resultStr = session.run(command); } catch (Exception e) { throw + * new InterruptedException(); } + * + * if(resultStr!=null&&resultStr.trim().length()>0){ String speed = + * resultStr.split(lineSeparator)[0].split(":")[1].trim(); + * info._setCPUSpeed(Double.parseDouble(speed)); }else{ + * info._setCPUSpeed(0); } + */ + } - - + } diff --git a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/modeldata/ModelDataProcessor.java b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/modeldata/ModelDataProcessor.java index afb2091..dbcdab2 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/modeldata/ModelDataProcessor.java +++ b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/modeldata/ModelDataProcessor.java @@ -27,25 +27,19 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; -import org.eclipse.linuxtools.oprofile.core.PathParser; +import org.eclipse.linuxtools.oprofile.core.CommandManager; import org.eclipse.linuxtools.oprofile.core.model.OpModelRoot; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import com.samsung.linuxplatform.oprofile.core.OprofileCommonConstants; import com.samsung.linuxplatform.oprofile.core.processor.modeldata.handler.OprofileSAXHandler; -import com.samsung.slp.common.conn.session.ISession; public class ModelDataProcessor{ - private ISession session; private OpModelRoot root; - public ModelDataProcessor(ISession session,OpModelRoot root) throws InterruptedException{ - if(session==null) - throw new InterruptedException("Target isn't connected or valid"); - - this.session = session; + public ModelDataProcessor(OpModelRoot root) throws InterruptedException{ this.root = root; } @@ -61,13 +55,14 @@ public class ModelDataProcessor{ String resultStr= null; try { - resultStr = session.run(COMMAND_SESSION_EVENT, null); - resultStr = PathParser.pathParsing(resultStr); + //resultStr = session.run(COMMAND_SESSION_EVENT, null); + resultStr = CommandManager.runCommandReturningResult(COMMAND_SESSION_EVENT); + } catch (Exception e) { throw new InterruptedException(); } - if(resultStr==null||resultStr.trim().length()==0){ + if(resultStr==null||resultStr.trim().length() ==0){ // root.reset(); return; }else{ diff --git a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/sessions/SessionsProcessor.java b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/sessions/SessionsProcessor.java index 7344899..42d9dec 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/sessions/SessionsProcessor.java +++ b/org.eclipse.linuxtools.oprofile.core/src/com/samsung/linuxplatform/oprofile/core/processor/sessions/SessionsProcessor.java @@ -22,23 +22,17 @@ package com.samsung.linuxplatform.oprofile.core.processor.sessions; import java.util.ArrayList; +import org.eclipse.linuxtools.oprofile.core.CommandManager; import org.eclipse.linuxtools.oprofile.core.Oprofile; -import org.eclipse.linuxtools.oprofile.core.PathParser; import org.eclipse.linuxtools.oprofile.core.model.OpModelEvent; import org.eclipse.linuxtools.oprofile.core.model.OpModelSession; import com.samsung.linuxplatform.oprofile.core.OprofileCommonConstants; -import com.samsung.slp.common.conn.session.ISession; public class SessionsProcessor{ - private ISession session; - public SessionsProcessor(ISession session) throws InterruptedException{ - if(session==null) - throw new InterruptedException("Target isn't connected or valid"); - - this.session = session; + public SessionsProcessor() throws InterruptedException{ } private final String DEFAULT_SESSION_NAME = "current"; @@ -51,23 +45,21 @@ public class SessionsProcessor{ return; } - String resultStr= null; + String[] resultStr= null; try { - resultStr = session.run(COMMAND_SESSION_EVENT, null); - resultStr = PathParser.pathParsing(resultStr); + //resultStr = session.run(COMMAND_SESSION_EVENT, null); + resultStr = CommandManager.runCommandReturningResultArray(COMMAND_SESSION_EVENT); } catch (Exception e) { throw new InterruptedException(); } - if(resultStr==null||resultStr.trim().length()==0) + if(resultStr==null||resultStr.length == 0 ) return; - String eventStr[] = resultStr.split("\r?\n"); - for(int i=0;i 0 + && !result[result.length - 1].contains("0")) { + return false; + } else { + return true; + } + } +} diff --git a/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/PathParser.java b/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/PathParser.java deleted file mode 100644 index f769bd9..0000000 --- a/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/PathParser.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.eclipse.linuxtools.oprofile.core; - -public class PathParser { - static public String pathParsing(String str){ - if(str.startsWith("/opt/home/root # ")){ - str = str.substring(17,str.length()); - if(str.startsWith("\r\n")){ - str = str.substring(2, str.length()); - } - } - return str; - } -} diff --git a/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/LinuxOpcontrolProvider.java b/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/LinuxOpcontrolProvider.java index 63ac8f3..1632448 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/LinuxOpcontrolProvider.java +++ b/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/LinuxOpcontrolProvider.java @@ -8,11 +8,12 @@ * Contributors: * Keith Seitz - initial API and implementation * Kent Sebastian - *******************************************************************************/ + *******************************************************************************/ package org.eclipse.linuxtools.oprofile.core.linux; import java.util.ArrayList; +import org.eclipse.linuxtools.oprofile.core.CommandManager; import org.eclipse.linuxtools.oprofile.core.IOpcontrolProvider; import org.eclipse.linuxtools.oprofile.core.OpcontrolException; import org.eclipse.linuxtools.oprofile.core.Oprofile; @@ -22,25 +23,24 @@ import org.eclipse.linuxtools.oprofile.core.daemon.OprofileDaemonOptions; import com.samsung.linuxplatform.oprofile.core.OprofileComm; import com.samsung.linuxplatform.oprofile.core.OprofileCommonConstants; -import com.samsung.slp.common.conn.device.DeviceManager; -import com.samsung.slp.common.conn.session.ISession; +import com.samsung.slp.common.connection.ConnectionPlugin; /** * A class which encapsulates running opcontrol. */ public class LinuxOpcontrolProvider implements IOpcontrolProvider { // Location of opcontrol security wrapper -// private static final String _OPCONTROL_REL_PATH = "natives/linux/scripts/opcontrol"; //$NON-NLS-1$ + // private static final String _OPCONTROL_REL_PATH = "natives/linux/scripts/opcontrol"; //$NON-NLS-1$ private final String OPCONTROL_PROGRAM; // Initialize the Oprofile kernel module and oprofilefs private static final String _OPD_INIT_MODULE = "--init"; //$NON-NLS-1$ - + // Setup daemon collection arguments private static final String _OPD_SETUP = "--setup"; //$NON-NLS-1$ private static final String _OPD_SETUP_SEPARATE = "--separate="; //$NON-NLS-1$ private static final String _OPD_SETUP_SEPARATE_SEPARATOR = ","; //$NON-NLS-1$ -// private static final String _OPD_SETUP_SEPARATE_NONE = "none"; //$NON-NLS-1$ + // private static final String _OPD_SETUP_SEPARATE_NONE = "none"; //$NON-NLS-1$ private static final String _OPD_SETUP_SEPARATE_LIBRARY = "library"; //$NON-NLS-1$ private static final String _OPD_SETUP_SEPARATE_KERNEL = "kernel"; //$NON-NLS-1$ private static final String _OPD_SETUP_SEPARATE_THREAD = "thread"; //$NON-NLS-1$ @@ -59,86 +59,92 @@ public class LinuxOpcontrolProvider implements IOpcontrolProvider { // Kernel image file options private static final String _OPD_KERNEL_NONE = "--no-vmlinux"; //$NON-NLS-1$ private static final String _OPD_KERNEL_FILE = "--vmlinux="; //$NON-NLS-1$ - + // Logging verbosity -// private static final String _OPD_VERBOSE_LOGGING = "--verbose="; //$NON-NSL-1$ -// private static final String _OPD_VERBOSE_ALL = "all"; //$NON-NLS-1$ -// private static final String _OPD_VERBOSE_SFILE = "sfile"; //$NON-NLS-1$ -// private static final String _OPD_VERBOSE_ARCS = "arcs"; //$NON-NLS-1$ -// private static final String _OPD_VERBOSE_SAMPLES = "samples"; //$NON-NLS-1$ -// private static final String _OPD_VERBOSE_MODULE = "module"; //$NON-NLS-1$ -// private static final String _OPD_VERBOSE_MISC = "misc"; //$NON-NLS-1$ - + // private static final String _OPD_VERBOSE_LOGGING = "--verbose="; + // //$NON-NSL-1$ + // private static final String _OPD_VERBOSE_ALL = "all"; //$NON-NLS-1$ + // private static final String _OPD_VERBOSE_SFILE = "sfile"; //$NON-NLS-1$ + // private static final String _OPD_VERBOSE_ARCS = "arcs"; //$NON-NLS-1$ + // private static final String _OPD_VERBOSE_SAMPLES = "samples"; //$NON-NLS-1$ + // private static final String _OPD_VERBOSE_MODULE = "module"; //$NON-NLS-1$ + // private static final String _OPD_VERBOSE_MISC = "misc"; //$NON-NLS-1$ + // Start the daemon process without starting data collection private static final String _OPD_START_DAEMON = "--start-daemon"; //$NON-NLS-1$ - + // Start collecting profiling data private static final String _OPD_START_COLLECTION = "--start"; //$NON-NLS-1$ - + // Flush the collected profiling data to disk private static final String _OPD_DUMP = "--dump"; //$NON-NLS-1$ - + // Stop data collection private static final String _OPD_STOP_COLLECTION = "--stop"; //$NON-NLS-1$ - + // Stop data collection and stop daemon private static final String _OPD_SHUTDOWN = "--shutdown"; //$NON-NLS-1$ - + // Clear out data from current session private static final String _OPD_RESET = "--reset"; //$NON-NLS-1$ - + // Save data from the current session private static final String _OPD_SAVE_SESSION = "--save="; //$NON-NLS-1$ - + // Unload the oprofile kernel module and oprofilefs private static final String _OPD_DEINIT_MODULE = "--deinit"; //$NON-NLS-1$ - + // Logging verbosity. Specified with setupDaemon. - //--verbosity=all generates WAY too much stuff in the log + // --verbosity=all generates WAY too much stuff in the log private String _verbosity = ""; //$NON-NLS-1$ - - + public LinuxOpcontrolProvider() throws OpcontrolException { -// jinu modified at 20090526 -// OPCONTROL_PROGRAM = _findOpcontrol(); + // jinu modified at 20090526 + // OPCONTROL_PROGRAM = _findOpcontrol(); OPCONTROL_PROGRAM = OprofileCommonConstants.COMMAND_OPCONTROL; } - + /** * Unload the kernel module and oprofilefs + * * @throws OpcontrolException */ public void deinitModule() throws OpcontrolException { _runOpcontrol(_OPD_DEINIT_MODULE); } - + /** * Dump collected profiling data + * * @throws OpcontrolException */ public void dumpSamples() throws OpcontrolException { _runOpcontrol(_OPD_DUMP); } - + /** * Loads the kernel module and oprofilefs + * * @throws OpcontrolException */ public void initModule() throws OpcontrolException { _runOpcontrol(_OPD_INIT_MODULE); } - + /** * Clears out data from current session + * * @throws OpcontrolException */ public void reset() throws OpcontrolException { _runOpcontrol(_OPD_RESET); } - + /** * Saves the current ("default") session - * @param name the name to which to save the session + * + * @param name + * the name to which to save the session * @throws OpcontrolException */ public void saveSession(String name) throws OpcontrolException { @@ -146,13 +152,16 @@ public class LinuxOpcontrolProvider implements IOpcontrolProvider { cmd.add(_OPD_SAVE_SESSION + name); _runOpcontrol(cmd); } - + /** * Give setup aruments - * @param args list of parameters for daemon + * + * @param args + * list of parameters for daemon * @throws OpcontrolException */ - public void setupDaemon(OprofileDaemonOptions options, OprofileDaemonEvent[] events) throws OpcontrolException { + public void setupDaemon(OprofileDaemonOptions options, + OprofileDaemonEvent[] events) throws OpcontrolException { // Convert options & events to arguments for opcontrol ArrayList args = new ArrayList(); args.add(_OPD_SETUP); @@ -168,18 +177,21 @@ public class LinuxOpcontrolProvider implements IOpcontrolProvider { } _runOpcontrol(args); } - - //jinu added at 20090602 - public void setupDaemon(OprofileDaemonOptions options, OprofileDaemonEvent[] events, String defaultEvent) throws OpcontrolException { + + // jinu added at 20090602 + public void setupDaemon(OprofileDaemonOptions options, + OprofileDaemonEvent[] events, String defaultEvent) + throws OpcontrolException { // Convert options & events to arguments for opcontrol ArrayList args = new ArrayList(); args.add(_OPD_SETUP); _optionsToArguments(args, options); if (!Oprofile.getTimerMode()) { if (events == null || events.length == 0) { - //jinu modified at 20090602 - //args.add(_OPD_SETUP_EVENT + _OPD_SETUP_EVENT_DEFAULT); - args.add(defaultEvent); + // jinu modified at 20090602 + // args.add(_OPD_SETUP_EVENT + _OPD_SETUP_EVENT_DEFAULT); + if(null != defaultEvent) + args.add(defaultEvent); } else { for (int i = 0; i < events.length; ++i) { _eventToArguments(args, events[i]); @@ -188,112 +200,109 @@ public class LinuxOpcontrolProvider implements IOpcontrolProvider { } _runOpcontrol(args); } - + /** * Stop data collection and remove daemon + * * @throws OpcontrolException */ public void shutdownDaemon() throws OpcontrolException { _runOpcontrol(_OPD_SHUTDOWN); } - + /** * Start data collection (will start daemon if necessary) + * * @throws OpcontrolException */ public void startCollection() throws OpcontrolException { _runOpcontrol(_OPD_START_COLLECTION); } - + /** * Start daemon without starting profiling + * * @throws OpcontrolException */ public void startDaemon() throws OpcontrolException { _runOpcontrol(_OPD_START_DAEMON); } - + /** * Stop data collection + * * @throws OpcontrolException */ public void stopCollection() throws OpcontrolException { _runOpcontrol(_OPD_STOP_COLLECTION); } - + // Convenience function private void _runOpcontrol(String cmd) throws OpcontrolException { ArrayList list = new ArrayList(); list.add(cmd); _runOpcontrol(list); } - + // Will add opcontrol program to beginning of args - // args: list of opcontrol arguments (not including opcontrol program itself) - private void _runOpcontrol(ArrayList args) throws OpcontrolException { + // args: list of opcontrol arguments (not including opcontrol program + // itself) + private void _runOpcontrol(ArrayList args) + throws OpcontrolException { args.add(0, OPCONTROL_PROGRAM); // Verbosity hack. If --start or --start-daemon, add verbosity, if set String cmd = (String) args.get(1); - if (_verbosity.length() > 0 && (cmd.equals (_OPD_START_COLLECTION) || cmd.equals(_OPD_START_DAEMON))) { + if (_verbosity.length() > 0 + && (cmd.equals(_OPD_START_COLLECTION) || cmd + .equals(_OPD_START_DAEMON))) { args.add(_verbosity); } - + String[] cmdArray = new String[args.size()]; args.toArray(cmdArray); - - //jinu modified at 20090526 + + // jinu modified at 20090526 runCommand(cmdArray); /* - Process p = null; - try { - p = Runtime.getRuntime().exec(cmdArray); - } catch (IOException ioe) { - if (p != null) { - p.destroy(); - p = null; - } - - throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolRun", ioe)); //$NON-NLS-1$ - } - - if (p != null) { - BufferedReader stdout = new BufferedReader(new InputStreamReader(p.getErrorStream())); - String output = "", s; //$NON-NLS-1$ - try { - while ((s = stdout.readLine()) != null) { - output += s; - } - - int ret = p.waitFor(); - if (ret != 0) { - System.out.println(output); - throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolNonZeroExitCode", null)); //$NON-NLS-1$ - } - } catch (IOException ioe) { - ioe.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - */ + * Process p = null; try { p = Runtime.getRuntime().exec(cmdArray); } + * catch (IOException ioe) { if (p != null) { p.destroy(); p = null; } + * + * throw new + * OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolRun" + * , ioe)); //$NON-NLS-1$ } + * + * if (p != null) { BufferedReader stdout = new BufferedReader(new + * InputStreamReader(p.getErrorStream())); String output = "", s; + * //$NON-NLS-1$ try { while ((s = stdout.readLine()) != null) { output + * += s; } + * + * int ret = p.waitFor(); if (ret != 0) { System.out.println(output); + * throw new OpcontrolException(OprofileCorePlugin.createErrorStatus( + * "opcontrolNonZeroExitCode", null)); //$NON-NLS-1$ } } catch + * (IOException ioe) { ioe.printStackTrace(); } catch + * (InterruptedException e) { e.printStackTrace(); } } + */ } - -// private static String _findOpcontrol() throws OpcontrolException { -// URL url = FileLocator.find(Platform.getBundle(OprofileCorePlugin.getId()), new Path(_OPCONTROL_REL_PATH), null); -// -// if (url != null) { -// try { -// return FileLocator.toFileURL(url).getPath(); -// } catch (IOException ignore) { } -// } else { -// throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolProvider", null)); //$NON-NLS-1$ -// } -// -// return null; -// } + + // private static String _findOpcontrol() throws OpcontrolException { + // URL url = + // FileLocator.find(Platform.getBundle(OprofileCorePlugin.getId()), new + // Path(_OPCONTROL_REL_PATH), null); + // + // if (url != null) { + // try { + // return FileLocator.toFileURL(url).getPath(); + // } catch (IOException ignore) { } + // } else { + // throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolProvider", null)); //$NON-NLS-1$ + // } + // + // return null; + // } // Convert the event into arguments for opcontrol - private void _eventToArguments(ArrayList args, OprofileDaemonEvent event) { + private void _eventToArguments(ArrayList args, + OprofileDaemonEvent event) { // Event spec: "EVENT:count:mask:profileKernel:profileUser" String spec = new String(_OPD_SETUP_EVENT); spec += event.getEvent().getText(); @@ -302,113 +311,113 @@ public class LinuxOpcontrolProvider implements IOpcontrolProvider { spec += _OPD_SETUP_EVENT_SEPARATOR; spec += event.getEvent().getUnitMask().getMaskValue(); spec += _OPD_SETUP_EVENT_SEPARATOR; - spec += (event.getProfileKernel() ? _OPD_SETUP_EVENT_TRUE : _OPD_SETUP_EVENT_FALSE); + spec += (event.getProfileKernel() ? _OPD_SETUP_EVENT_TRUE + : _OPD_SETUP_EVENT_FALSE); spec += _OPD_SETUP_EVENT_SEPARATOR; - spec += (event.getProfileUser() ? _OPD_SETUP_EVENT_TRUE : _OPD_SETUP_EVENT_FALSE); + spec += (event.getProfileUser() ? _OPD_SETUP_EVENT_TRUE + : _OPD_SETUP_EVENT_FALSE); args.add(spec); } - + // Convert the options into arguments for opcontrol - private void _optionsToArguments(ArrayList args, OprofileDaemonOptions options) { + private void _optionsToArguments(ArrayList args, + OprofileDaemonOptions options) { // Add separate flags int mask = options.getSeparateProfilesMask(); String separate = new String(_OPD_SETUP_SEPARATE); - + if (mask == OprofileDaemonOptions.SEPARATE_NONE) { - separate += _OPD_SETUP_SEPARATE_LIBRARY + _OPD_SETUP_SEPARATE_SEPARATOR + _OPD_SETUP_SEPARATE_KERNEL; - //separate += _OPD_SETUP_SEPARATE_NONE; + separate += _OPD_SETUP_SEPARATE_LIBRARY + + _OPD_SETUP_SEPARATE_SEPARATOR + + _OPD_SETUP_SEPARATE_KERNEL; + // separate += _OPD_SETUP_SEPARATE_NONE; } else { - //note that opcontrol will nicely ignore the trailing comma + // note that opcontrol will nicely ignore the trailing comma if ((mask & OprofileDaemonOptions.SEPARATE_LIBRARY) != 0) - separate += _OPD_SETUP_SEPARATE_LIBRARY + _OPD_SETUP_SEPARATE_SEPARATOR; + separate += _OPD_SETUP_SEPARATE_LIBRARY + + _OPD_SETUP_SEPARATE_SEPARATOR; if ((mask & OprofileDaemonOptions.SEPARATE_KERNEL) != 0) - separate += _OPD_SETUP_SEPARATE_KERNEL + _OPD_SETUP_SEPARATE_SEPARATOR; + separate += _OPD_SETUP_SEPARATE_KERNEL + + _OPD_SETUP_SEPARATE_SEPARATOR; if ((mask & OprofileDaemonOptions.SEPARATE_THREAD) != 0) - separate += _OPD_SETUP_SEPARATE_THREAD + _OPD_SETUP_SEPARATE_SEPARATOR; + separate += _OPD_SETUP_SEPARATE_THREAD + + _OPD_SETUP_SEPARATE_SEPARATOR; if ((mask & OprofileDaemonOptions.SEPARATE_CPU) != 0) - separate += _OPD_SETUP_SEPARATE_CPU + _OPD_SETUP_SEPARATE_SEPARATOR; + separate += _OPD_SETUP_SEPARATE_CPU + + _OPD_SETUP_SEPARATE_SEPARATOR; } args.add(separate); - + // Add kernel image - if (options.getKernelImageFile() == null || options.getKernelImageFile().length() == 0) { + if (options.getKernelImageFile() == null + || options.getKernelImageFile().length() == 0) { args.add(_OPD_KERNEL_NONE); } else { args.add(_OPD_KERNEL_FILE + options.getKernelImageFile()); } - //image filter -- always non-null + // image filter -- always non-null args.add(_OPD_SETUP_IMAGE + options.getBinaryImage()); - - //callgraph depth + + // callgraph depth args.add(_OPD_CALLGRAPH_DEPTH + options.getCallgraphDepth()); } - - - //jinu added at 20090528 + + // jinu added at 20090528 public void removeDaemonSetting() throws OpcontrolException { - final String[] _OPD_REMOVE_SETTING = {"rm", "-rf", "/root/.oprofile/daemonrc"}; + final String[] _OPD_REMOVE_SETTING = { "rm", "-rf", + "/root/.oprofile/daemonrc" }; runCommand(_OPD_REMOVE_SETTING); } - - //jinu added at 20090528 - private void runCommand(String[] comm) throws OpcontrolException{ - - if(!OprofileComm.checkTarget()) return; - ISession session = null; - - try { - session = OprofileComm.getSession(); - } catch (Exception e) { - e.printStackTrace(); - } - + + // jinu added at 20090528 + private void runCommand(String[] comm) throws OpcontrolException { + String str = OprofileComm.getCommandString(comm); -// String result=null; + // String result=null; try { -// result = session.run(str); - session.run(str, null); + // result = session.run(str); + //session.run(str, null); + if(str.contains(_OPD_START_COLLECTION)){ + str = str + " && echo start_ok"; + } + CommandManager.runShell(str); } catch (Exception e) { - throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolRun (" + - DeviceManager.getSelectedDevice().getMachineType() + ")", e)); //$NON-NLS-1$ - } - //----------------------------------- - - //jinu removed at 20090616 - /* - Process p = null; - try { - p = Runtime.getRuntime().exec(comm); - } catch (IOException ioe) { - if (p != null) { - p.destroy(); - p = null; + String devType = null; + if(null == ConnectionPlugin.getDefault().getCurrentDevice()){ + devType = ""; } - - throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolRun", ioe)); //$NON-NLS-1$ - } - - if (p != null) { - BufferedReader stdout = new BufferedReader(new InputStreamReader(p.getErrorStream())); - String output = "", s; //$NON-NLS-1$ - try { - while ((s = stdout.readLine()) != null) { - output += s; - } - - int ret = p.waitFor(); - if (ret != 0) { - System.out.println(output); - throw new OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolNonZeroExitCode", null)); //$NON-NLS-1$ - } - } catch (IOException ioe) { - ioe.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); + else if (CommandManager.isEmulator()) { + devType = "Emulator"; + } else { + devType = "RealDevice"; } + throw new OpcontrolException(OprofileCorePlugin.createErrorStatus( + "opcontrolRun (" + devType + ")", e)); //$NON-NLS-1$ } - */ + // ----------------------------------- + + // jinu removed at 20090616 + /* + * Process p = null; try { p = Runtime.getRuntime().exec(comm); } catch + * (IOException ioe) { if (p != null) { p.destroy(); p = null; } + * + * throw new + * OpcontrolException(OprofileCorePlugin.createErrorStatus("opcontrolRun" + * , ioe)); //$NON-NLS-1$ } + * + * if (p != null) { BufferedReader stdout = new BufferedReader(new + * InputStreamReader(p.getErrorStream())); String output = "", s; + * //$NON-NLS-1$ try { while ((s = stdout.readLine()) != null) { output + * += s; } + * + * int ret = p.waitFor(); if (ret != 0) { System.out.println(output); + * throw new OpcontrolException(OprofileCorePlugin.createErrorStatus( + * "opcontrolNonZeroExitCode", null)); //$NON-NLS-1$ } } catch + * (IOException ioe) { ioe.printStackTrace(); } catch + * (InterruptedException e) { e.printStackTrace(); } } + */ } - + } diff --git a/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/OpxmlRunner.java b/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/OpxmlRunner.java index e6dde4b..322ca4d 100644 --- a/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/OpxmlRunner.java +++ b/org.eclipse.linuxtools.oprofile.core/src/org/eclipse/linuxtools/oprofile/core/linux/OpxmlRunner.java @@ -16,9 +16,9 @@ import java.io.StringReader; import javax.xml.parsers.SAXParserFactory; +import org.eclipse.linuxtools.oprofile.core.CommandManager; import org.eclipse.linuxtools.oprofile.core.OprofileCorePlugin; import org.eclipse.linuxtools.oprofile.core.OpxmlException; -import org.eclipse.linuxtools.oprofile.core.PathParser; import org.eclipse.linuxtools.oprofile.core.opxml.OprofileSAXHandler; import org.eclipse.linuxtools.oprofile.core.opxml.XMLProcessor; import org.xml.sax.InputSource; @@ -26,7 +26,6 @@ import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import com.samsung.linuxplatform.oprofile.core.OprofileComm; -import com.samsung.slp.common.conn.session.ISession; /** * This class will run opxml. @@ -85,11 +84,12 @@ public class OpxmlRunner { try { //jinu added at 20090604 -------------------------- if(!OprofileComm.checkTarget()) return false; - ISession session =OprofileComm.getSession(); + //ISession session =OprofileComm.getSession(); String command = OprofileComm.getCommandString(cmdArray)+" | sed 's/^[^<]*//' | sed 's/&//'"; - String str = session.run(command, null); - str = PathParser.pathParsing(str); + //String str = session.run(command, null); + String str = CommandManager.runCommandReturningResult(command); + reader.parse(new InputSource(new StringReader(str))); //jinu removed at 20090616 @@ -109,8 +109,6 @@ public class OpxmlRunner { return true; } catch (SAXException e) { e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); } catch (IOException e) { // System.out.println("IOException: " + e.getMessage()); e.printStackTrace(); diff --git a/org.eclipse.linuxtools.oprofile.launch.exe/META-INF/MANIFEST.MF b/org.eclipse.linuxtools.oprofile.launch.exe/META-INF/MANIFEST.MF index a42f47c..ecc4b0d 100644 --- a/org.eclipse.linuxtools.oprofile.launch.exe/META-INF/MANIFEST.MF +++ b/org.eclipse.linuxtools.oprofile.launch.exe/META-INF/MANIFEST.MF @@ -9,7 +9,6 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.4.0", org.eclipse.debug.ui;bundle-version="3.4.2", org.eclipse.linuxtools.profiling.launch, com.samsung.slp.nativeide;bundle-version="1.0.0", - com.samsung.slp.common.conn;bundle-version="1.0.0", com.samsung.slp.common;bundle-version="1.3.20" Bundle-Vendor: Eclipse Linux Tools Bundle-Version: 1.3.18.qualifier @@ -25,6 +24,7 @@ Import-Package: org.eclipse.cdt.debug.core, Bundle-SymbolicName: org.eclipse.linuxtools.oprofile.launch.exe;singleton:=true Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-Activator: com.samsung.linuxplatform.oprofile.launch.Activator +Export-Package: com.samsung.linuxplatform.oprofile.launch diff --git a/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/SLPOprofileLaunchDelegate.java b/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/SLPOprofileLaunchDelegate.java index 79c1b0c..3e19cf9 100644 --- a/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/SLPOprofileLaunchDelegate.java +++ b/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/SLPOprofileLaunchDelegate.java @@ -29,61 +29,63 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchesListener2; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; - -import com.samsung.slp.common.conn.device.DeviceManager; -import com.samsung.slp.common.conn.machine.IMachine; -import com.samsung.slp.common.conn.session.ISession; -import com.samsung.slp.common.properties.InstallPathConfig; -import com.samsung.slp.nativeide.launch.SLPLaunchDelegate; -import com.samsung.slp.nativeide.launch.SLPLaunchMessages; - +import org.eclipse.linuxtools.oprofile.core.CommandManager; +import org.eclipse.linuxtools.oprofile.core.OpcontrolException; +import org.eclipse.linuxtools.oprofile.core.Oprofile; import org.eclipse.linuxtools.oprofile.core.OprofileCorePlugin; -import org.eclipse.linuxtools.oprofile.core.PathParser; import org.eclipse.linuxtools.oprofile.core.daemon.OprofileDaemonEvent; -import org.eclipse.linuxtools.oprofile.core.OpcontrolException; import org.eclipse.linuxtools.oprofile.launch.OprofileLaunchPlugin; import org.eclipse.linuxtools.oprofile.launch.configuration.LaunchOptions; import org.eclipse.linuxtools.oprofile.launch.configuration.OprofileCounter; import org.eclipse.linuxtools.oprofile.ui.OprofileUiPlugin; import org.eclipse.linuxtools.oprofile.ui.view.OprofileView; import org.eclipse.linuxtools.profiling.launch.Messages; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import com.samsung.slp.common.properties.InstallPathConfig; +import com.samsung.slp.nativeide.launch.SLPLaunchDelegate; +import com.samsung.slp.nativeide.launch.SLPLaunchMessages; public class SLPOprofileLaunchDelegate extends SLPLaunchDelegate { protected static final String PACKAGE_NAME = "oprofile"; protected static final String PACKAGE_FILENAME_ARM = "oprofile_armel.deb"; - + @Override - public void launch(ILaunchConfiguration config, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException { + public void launch(ILaunchConfiguration config, String mode, + ILaunch launch, IProgressMonitor monitor) throws CoreException { if (monitor == null) monitor = new NullProgressMonitor(); try { + monitor.beginTask(SLPLaunchMessages.LAUNCH_APPLICATION, 30); - + activateProgressView(); - + verifyCProjectConfigurationSettings(config); - verifyDeviceReachability(getProject(config), new SubProgressMonitor(monitor, 9)); - verifyBuildConfiguration(config, mode, new SubProgressMonitor(monitor, 11)); - - ISession session = getLaunchSession(config, new SubProgressMonitor(monitor, 1)); - + verifyDeviceReachability(getProject(config), + new SubProgressMonitor(monitor, 9)); + verifyBuildConfiguration(config, mode, new SubProgressMonitor( + monitor, 11)); + + Oprofile.getOpInfo(); + + // ISession session = getLaunchSession(config, new + // SubProgressMonitor(monitor, 1)); + if (mode.equals(ILaunchManager.PROFILE_MODE)) { - deployApplication(session, config, new SubProgressMonitor(monitor, 9)); + deployApplication(config, new SubProgressMonitor(monitor, 9)); monitor.worked(1); - - launchApplicationWithOprofile(session, launch, config, monitor); + + launchApplicationWithOprofile(launch, config, monitor); } else { newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, null); } @@ -92,165 +94,200 @@ public class SLPOprofileLaunchDelegate extends SLPLaunchDelegate { } } - protected Process launchApplicationWithOprofile(ISession session, ILaunch launch, ILaunchConfiguration config, IProgressMonitor monitor) throws CoreException { - Process remoteShellProcess = null; - + protected void launchApplicationWithOprofile(ILaunch launch, + ILaunchConfiguration config, IProgressMonitor monitor) + throws CoreException { try { - setEnvironments(config, session); + setEnvironments(config); // check oprofile tool - checkProfilingTool(monitor, session); - - String remoteExePath = getRemoteExePath(config); + checkProfilingTool(monitor); + + String remoteExePath = getRemoteExePath(config); String cmd = "cd " + remoteExePath + CMD_RESULT_CHECK; - String resultRsp = session.run(cmd, null); - resultRsp = PathParser.pathParsing(resultRsp); - if(!resultRsp.contains("0")) - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, new Exception("Cannot change to run-directory : " + ". (Return Code: " + resultRsp + ")")); + // String resultRsp = session.run(cmd, null); + String[] resultRsp = CommandManager + .runCommandReturningResultArray(cmd); + if (!CommandManager.isRunSeccessfuly(resultRsp)) + newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, + new Exception("Cannot change to run-directory : " + + ". (Return Code: " + resultRsp + ")")); IPath exeFile = CDebugUtils.verifyProgramPath(config); remoteExePath += exeFile.toFile().getName(); cmd = "ls " + remoteExePath + CMD_RESULT_CHECK; - resultRsp = session.run(cmd, null); - resultRsp = PathParser.pathParsing(resultRsp); - if(!resultRsp.contains("0")) - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, new Exception("Executable does not exist on a valid path. You must install your application before running it.")); - + // resultRsp = session.run(cmd, null); + resultRsp = CommandManager.runCommandReturningResultArray(cmd); + if (!CommandManager.isRunSeccessfuly(resultRsp)) + newCoreException( + SLPLaunchMessages.CANNOT_LAUNCH, + new Exception( + "Executable does not exist on a valid path. You must install your application before running it.")); + monitor.worked(2); - preProcedure(config, launch, monitor, remoteExePath); + preProcedure(config, launch, monitor, remoteExePath); - String arguments = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, ""); + String arguments = config + .getAttribute( + ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, + ""); cmd = remoteExePath.trim(); - if(arguments != null && !arguments.equals("")) + if (arguments != null && !arguments.equals("")) cmd += " " + arguments; - - remoteShellProcess = session.launch(cmd, null); - - DebugPlugin.newProcess(launch, remoteShellProcess, exeFile.toFile().getName()); - + + // remoteShellProcess = session.launch(cmd, null); + + CommandManager.runShell(cmd); postProcedure(config, launch, monitor); - - } catch (CoreException e) { - if(session != null) - session.close(); + + } catch (CoreException e) { throw e; } catch (Exception e) { - if(remoteShellProcess != null) - remoteShellProcess.destroy(); - if(session != null) - session.close(); - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, e); } finally { - if(monitor.isCanceled()) - { + if (monitor.isCanceled()) { throw new OperationCanceledException(); - } - else - { + } else { monitor.done(); } } - - return remoteShellProcess; } - private void preProcedure(ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor, String imagePath) throws CoreException { - //FIXME: this assumes that project names are always the directory names in the workspace. - //this assumption may be wrong, but a shallow lookup seems ok - //jinu removed at 20090603 + private void preProcedure(ILaunchConfiguration config, ILaunch launch, + IProgressMonitor monitor, String imagePath) throws CoreException { + // FIXME: this assumes that project names are always the directory names + // in the workspace. + // this assumption may be wrong, but a shallow lookup seems ok + // jinu removed at 20090603 /* - String workspacePath = ResourcesPlugin.getWorkspace().getRoot().getLocation().toString(); - String imagePath = workspacePath - + Path.SEPARATOR - + config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, "") //$NON-NLS-1$ - + Path.SEPARATOR - + config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, ""); //$NON-NLS-1$ - */ - - LaunchOptions options = new LaunchOptions(); //default options created in the constructor + * String workspacePath = + * ResourcesPlugin.getWorkspace().getRoot().getLocation().toString(); + * String imagePath = workspacePath + Path.SEPARATOR + + * config.getAttribute + * (ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, "") + * //$NON-NLS-1$ + Path.SEPARATOR + + * config.getAttribute(ICDTLaunchConfigurationConstants + * .ATTR_PROGRAM_NAME, ""); //$NON-NLS-1$ + */ + + LaunchOptions options = new LaunchOptions(); // default options created + // in the constructor options.loadConfiguration(config); options.setBinaryImage(imagePath); - //if daemonEvents null or zero size, the default event will be used + // if daemonEvents null or zero size, the default event will be used String defaultEvent = null; OprofileDaemonEvent[] daemonEvents = null; - if (!config.getAttribute(OprofileLaunchPlugin.ATTR_USE_DEFAULT_EVENT, false)) { - //get the events to profile from the counters + if (!config.getAttribute(OprofileLaunchPlugin.ATTR_USE_DEFAULT_EVENT, + false)) { + // get the events to profile from the counters OprofileCounter[] counters = OprofileCounter.getCounters(config); ArrayList events = new ArrayList(); - + for (int i = 0; i < counters.length; ++i) { if (counters[i].getEnabled()) events.add(counters[i].getDaemonEvent()); } - + daemonEvents = new OprofileDaemonEvent[events.size()]; events.toArray(daemonEvents); } - //jinu added at 20090602-------------------------------- + // jinu added at 20090602-------------------------------- else { - String keyStr = config.getAttribute(OprofileLaunchPlugin.ATTR_SELECTED_DEFAULT_SETTING,""); + String keyStr = config.getAttribute( + OprofileLaunchPlugin.ATTR_SELECTED_DEFAULT_SETTING, ""); defaultEvent = DefaultSettingConstants.getSettingValue(keyStr); } - //-------------------------------------- - - //set up and launch the oprofile daemon + // -------------------------------------- + + // set up and launch the oprofile daemon try { - - //kill the daemon (it shouldn't be running already, but to be safe) - OprofileCorePlugin.getDefault().getOpcontrolProvider().shutdownDaemon(); - - //reset data from the (possibly) existing default session, + + // kill the daemon (it shouldn't be running already, but to be safe) + OprofileCorePlugin.getDefault().getOpcontrolProvider() + .shutdownDaemon(); + + // reset data from the (possibly) existing default session, // otherwise multiple runs will combine samples and results // won't make much sense OprofileCorePlugin.getDefault().getOpcontrolProvider().reset(); - - //setup the events and other parameters - //jinu modified at 20090603 - //OprofileCorePlugin.getDefault().getOpcontrolProvider().setupDaemon(options.getOprofileDaemonOptions(), daemonEvents); - OprofileCorePlugin.getDefault().getOpcontrolProvider().setupDaemon(options.getOprofileDaemonOptions(), daemonEvents, defaultEvent); - - //start the daemon & collection of samples - //note: since the daemon is only profiling for the specific image we told - // it to, no matter to start the daemon before the binary itself is run - OprofileCorePlugin.getDefault().getOpcontrolProvider().startCollection(); - - + + // setup the events and other parameters + // jinu modified at 20090603 + // OprofileCorePlugin.getDefault().getOpcontrolProvider().setupDaemon(options.getOprofileDaemonOptions(), + // daemonEvents); + OprofileCorePlugin + .getDefault() + .getOpcontrolProvider() + .setupDaemon(options.getOprofileDaemonOptions(), + daemonEvents, defaultEvent); + + // start the daemon & collection of samples + // note: since the daemon is only profiling for the specific image + // we told + // it to, no matter to start the daemon before the binary itself is + // run + OprofileCorePlugin.getDefault().getOpcontrolProvider() + .startCollection(); + } catch (OpcontrolException oe) { OprofileCorePlugin.showErrorDialog("opcontrolProvider", oe); //$NON-NLS-1$ return; } } - - private void postProcedure(ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException { - ILaunchManager lmgr = DebugPlugin.getDefault().getLaunchManager(); - lmgr.addLaunchListener(new LaunchTerminationWatcher(launch)); + + private void postProcedure(ILaunchConfiguration config, ILaunch launch, + IProgressMonitor monitor) throws CoreException { + // ILaunchManager lmgr = DebugPlugin.getDefault().getLaunchManager(); + // lmgr.addLaunchListener(new LaunchTerminationWatcher(launch)); + OprofileCorePlugin.getDefault().getOpcontrolProvider().dumpSamples(); + OprofileCorePlugin.getDefault().getOpcontrolProvider().shutdownDaemon(); + + // need to run this in the ui thread otherwise get SWT Exceptions + // based on concurrency issues + Display.getDefault().syncExec(new Runnable() { + public void run() { + OprofileView view = OprofileUiPlugin.getDefault() + .getOprofileView(); + if (view != null) { + view.refreshView(); + } else { + try { + PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getActivePage() + .showView(OprofileUiPlugin.ID_OPROFILE_VIEW); + } catch (PartInitException e) { + e.printStackTrace(); + } + OprofileUiPlugin.getDefault().getOprofileView() + .refreshView(); + } + } + }); } - - public static void checkProfilingTool(IProgressMonitor monitor, ISession session) throws Exception { + public static void checkProfilingTool(IProgressMonitor monitor) + throws Exception { // find oprofile String oprofileCmd = "/usr/bin/opcontrol"; - String cmd = "ls " + oprofileCmd + CMD_RESULT_CHECK ; - String resultRsp = session.run(cmd, null); - resultRsp = PathParser.pathParsing(resultRsp); - if(!resultRsp.contains("0")) - { - if(DeviceManager.getSelectedDevice().getMachineType().equals(IMachine.VIRTUAL_DEVICE)) - { - throw new Exception(SLPLaunchMessages.CANNOT_LAUNCH, new Exception("No oprofile in this target (/usr/bin/opcontrol).")); - } - else - { - transferProfilingToolPackage(monitor, session); - installProfilingToolPackage(monitor, session); + String cmd = "ls " + oprofileCmd + CMD_RESULT_CHECK; + // String resultRsp = session.run(cmd, null); + String[] resultRsp = CommandManager.runCommandReturningResultArray(cmd); + if (!CommandManager.isRunSeccessfuly(resultRsp)) { + if (CommandManager.isEmulator()) { + throw new Exception( + SLPLaunchMessages.CANNOT_LAUNCH, + new Exception( + "No oprofile in this target (/usr/bin/opcontrol).")); + } else { + transferProfilingToolPackage(monitor); + installProfilingToolPackage(monitor); } } } - + /** * Transfer oprofile package to the target * @@ -258,43 +295,58 @@ public class SLPOprofileLaunchDelegate extends SLPLaunchDelegate { * @param session * connection session to the target or simulator * @return void - * + * * @exception CoreException * if unable to transfer a package */ - public static void transferProfilingToolPackage(IProgressMonitor monitor, ISession session) throws Exception { + public static void transferProfilingToolPackage(IProgressMonitor monitor) + throws Exception { try { - monitor.beginTask(Messages.getString("ProfileLaunch.TRANSFER_PROFILING_TOOL"), 1); + monitor.beginTask( + Messages.getString("ProfileLaunch.TRANSFER_PROFILING_TOOL"), + 1); // test whether oprofile package exist or not String sdkInstallPath = InstallPathConfig.getSDKPath(); - String toolPkgPath = sdkInstallPath + "/SDK/profiling-tool/" + PACKAGE_FILENAME_ARM; + String toolPkgPath = sdkInstallPath + "/SDK/profiling-tool/" + + PACKAGE_FILENAME_ARM; File toolPkg = new File(toolPkgPath); - if(toolPkg == null || !toolPkg.exists()) - throw new Exception(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), - new Exception("Tool package path (" + toolPkgPath + ") is not available.")); - + if (toolPkg == null || !toolPkg.exists()) + throw new Exception( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), + new Exception("Tool package path (" + toolPkgPath + + ") is not available.")); + String destDirectoryPath = TEMPORARY_PKG_PATH; - if (!session.isPathExist(destDirectoryPath)) { - String command = MAKE_DIRECTORY_CMD + destDirectoryPath + CMD_RESULT_CHECK; - String result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - throw new Exception(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), - new Exception("Destination path (" + destDirectoryPath + ") in not exist.")); + if (!CommandManager.isPathExist(destDirectoryPath)) { + String command = MAKE_DIRECTORY_CMD + destDirectoryPath + + CMD_RESULT_CHECK; + // String result = session.run(command, null); + String[] result = CommandManager + .runCommandReturningResultArray(command); + if (!CommandManager.isRunSeccessfuly(result)) + throw new Exception( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), + new Exception("Destination path (" + + destDirectoryPath + ") in not exist.")); } String srcFilePath = toolPkg.getAbsoluteFile().getCanonicalPath(); - String destFilePath = destDirectoryPath + toolPkg.getAbsoluteFile().getName(); + String destFilePath = destDirectoryPath + + toolPkg.getAbsoluteFile().getName(); - boolean isSuccess = session.transferFile(srcFilePath, destFilePath); + // boolean isSuccess = session.transferFile(srcFilePath, + // destFilePath); + boolean isSuccess = CommandManager.push(srcFilePath, destFilePath); if (isSuccess == false) - throw new Exception(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), - new Exception("source path (" + srcFilePath + "), dest path (" + destFilePath +")")); + throw new Exception( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), + new Exception("source path (" + srcFilePath + + "), dest path (" + destFilePath + ")")); } catch (Exception e) { - throw e; + throw e; } finally { monitor.done(); } @@ -308,82 +360,104 @@ public class SLPOprofileLaunchDelegate extends SLPLaunchDelegate { * @param pkgmgr * instance which contains resources and control information * @return void - * + * * @exception CoreException * if unable to install a package */ - public static void installProfilingToolPackage(IProgressMonitor monitor, ISession session) throws Exception { + public static void installProfilingToolPackage(IProgressMonitor monitor) + throws Exception { try { - monitor.beginTask(Messages.getString("ProfileLaunch.INSTALL_PROFILING_TOOL"), 2); + monitor.beginTask( + Messages.getString("ProfileLaunch.INSTALL_PROFILING_TOOL"), + 2); String packageDirectory = TEMPORARY_PKG_PATH; - String command = CHANGE_DIRECTORY_CMD + packageDirectory + CMD_RESULT_CHECK; - String result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - throw new Exception(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), new Exception("command is " + command)); + String command = CHANGE_DIRECTORY_CMD + packageDirectory + + CMD_RESULT_CHECK; + // String result = session.run(command, null); + String[] result = CommandManager + .runCommandReturningResultArray(command); + if (!CommandManager.isRunSeccessfuly(result)) + throw new Exception( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), + new Exception("command is " + command)); monitor.worked(1); // remount file system command = "mount -o remount,rw /" + CMD_RESULT_CHECK; - result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - throw new Exception(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), new Exception("command is " + command)); + // result = session.run(command, null); + result = CommandManager.runCommandReturningResultArray(command); + if (!CommandManager.isRunSeccessfuly(result)) + throw new Exception( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), + new Exception("command is " + command)); // install new application - command = PKG_TOOL_CMD + PKG_TOOL_INSTALL_OPTION + PACKAGE_FILENAME_ARM + CMD_RESULT_CHECK; - result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - throw new Exception(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), new Exception("command is " + command)); + command = PKG_TOOL_CMD + PKG_TOOL_INSTALL_OPTION + + PACKAGE_FILENAME_ARM + CMD_RESULT_CHECK; + // result = session.run(command, null); + result = CommandManager.runCommandReturningResultArray(command); + if (!CommandManager.isRunSeccessfuly(result)) + throw new Exception( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), + new Exception("command is " + command)); monitor.worked(1); - + // remount file system command = "mount -o remount,ro /" + CMD_RESULT_CHECK; - result = session.run(command, null); - result = PathParser.pathParsing(result); + // result = session.run(command, null); + CommandManager.runCommand(command); } catch (Exception e) { throw e; } finally { monitor.done(); } } - + class LaunchTerminationWatcher implements ILaunchesListener2 { private ILaunch launch; - + public LaunchTerminationWatcher(ILaunch il) { launch = il; } - + public void launchesTerminated(ILaunch[] launches) { try { for (ILaunch l : launches) { /** - * Dump samples from the daemon, - * shut down the daemon, + * Dump samples from the daemon, shut down the daemon, * activate the OProfile view (open it if it isn't already), - * refresh the view (which parses the data/ui model and displays it). + * refresh the view (which parses the data/ui model and + * displays it). */ if (l.equals(launch)) { - OprofileCorePlugin.getDefault().getOpcontrolProvider().dumpSamples(); - OprofileCorePlugin.getDefault().getOpcontrolProvider().shutdownDaemon(); + OprofileCorePlugin.getDefault().getOpcontrolProvider() + .dumpSamples(); + OprofileCorePlugin.getDefault().getOpcontrolProvider() + .shutdownDaemon(); - //need to run this in the ui thread otherwise get SWT Exceptions + // need to run this in the ui thread otherwise get SWT + // Exceptions // based on concurrency issues Display.getDefault().syncExec(new Runnable() { public void run() { - OprofileView view = OprofileUiPlugin.getDefault().getOprofileView(); + OprofileView view = OprofileUiPlugin + .getDefault().getOprofileView(); if (view != null) { view.refreshView(); } else { try { - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(OprofileUiPlugin.ID_OPROFILE_VIEW); + PlatformUI + .getWorkbench() + .getActiveWorkbenchWindow() + .getActivePage() + .showView( + OprofileUiPlugin.ID_OPROFILE_VIEW); } catch (PartInitException e) { e.printStackTrace(); } - OprofileUiPlugin.getDefault().getOprofileView().refreshView(); + OprofileUiPlugin.getDefault() + .getOprofileView().refreshView(); } } }); @@ -394,9 +468,14 @@ public class SLPOprofileLaunchDelegate extends SLPLaunchDelegate { } } - public void launchesAdded(ILaunch[] launches) { /* dont care */} - public void launchesChanged(ILaunch[] launches) { /* dont care */ } - public void launchesRemoved(ILaunch[] launches) { /* dont care */ } - } + public void launchesAdded(ILaunch[] launches) { /* dont care */ + } + + public void launchesChanged(ILaunch[] launches) { /* dont care */ + } + + public void launchesRemoved(ILaunch[] launches) { /* dont care */ + } + } } diff --git a/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/configuration/NormalOprofileLaunchConfigurationTabGroup.java b/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/configuration/NormalOprofileLaunchConfigurationTabGroup.java index ccd798b..7a4e166 100644 --- a/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/configuration/NormalOprofileLaunchConfigurationTabGroup.java +++ b/org.eclipse.linuxtools.oprofile.launch.exe/src/com/samsung/linuxplatform/oprofile/launch/configuration/NormalOprofileLaunchConfigurationTabGroup.java @@ -30,15 +30,11 @@ import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.linuxtools.oprofile.launch.configuration.OprofileEventConfigTab; import org.eclipse.linuxtools.profiling.launch.ProfileLaunchConfigurationTabGroup; -import com.samsung.linuxplatform.oprofile.core.OprofileComm; import com.samsung.linuxplatform.oprofile.launch.SLPOprofileLaunchDelegate; -import com.samsung.slp.common.conn.session.ISession; import com.samsung.slp.nativeide.launch.ui.SLPArgumentsTab; import com.samsung.slp.nativeide.launch.ui.SLPEnvironmentTab; import com.samsung.slp.nativeide.launch.ui.SLPMainTab; -import org.eclipse.debug.ui.sourcelookup.SourceLookupTab; - public class NormalOprofileLaunchConfigurationTabGroup extends ProfileLaunchConfigurationTabGroup { public void createTabs(ILaunchConfigurationDialog dialog, String mode) { @@ -59,10 +55,9 @@ public class NormalOprofileLaunchConfigurationTabGroup extends ProfileLaunchConf // added by greatim at 20110613 try{ - ISession session = OprofileComm.getSession(); IProgressMonitor monitor = new NullProgressMonitor(); - SLPOprofileLaunchDelegate.checkProfilingTool(monitor, session); + SLPOprofileLaunchDelegate.checkProfilingTool(monitor); } catch(Exception e) { } diff --git a/org.eclipse.linuxtools.oprofile.launch/META-INF/MANIFEST.MF b/org.eclipse.linuxtools.oprofile.launch/META-INF/MANIFEST.MF index 0f01e7c..dc8d5f6 100644 --- a/org.eclipse.linuxtools.oprofile.launch/META-INF/MANIFEST.MF +++ b/org.eclipse.linuxtools.oprofile.launch/META-INF/MANIFEST.MF @@ -5,7 +5,8 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.4.0", org.eclipse.cdt.launch;bundle-version="5.0.1", org.eclipse.cdt.debug.core;bundle-version="5.0.1", org.eclipse.linuxtools.oprofile.core, - com.samsung.slp.common.conn;bundle-version="1.0.0" + com.samsung.slp.common;bundle-version="1.3.20", + com.samsung.slp.common.connection;bundle-version="1.0.0" Bundle-Vendor: Eclipse Linux Tools Bundle-ActivationPolicy: lazy Bundle-Version: 1.3.18.qualifier diff --git a/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OProfileTargetConnectionListener.java b/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OProfileTargetConnectionListener.java index 19005f3..cddb2cd 100644 --- a/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OProfileTargetConnectionListener.java +++ b/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OProfileTargetConnectionListener.java @@ -22,26 +22,36 @@ package com.samsung.linuxplatform.oprofile.launch.listen; import org.eclipse.linuxtools.oprofile.core.Oprofile; -import com.samsung.slp.common.conn.device.DeviceManager; -import com.samsung.slp.common.conn.device.IDeviceListener; +import com.samsung.slp.common.connection.ConnectionPlugin; +import com.samsung.slp.common.connection.ConnectionPlugin.ISelectionListener; +import com.samsung.slp.sdblib.FileListingService.FileEntry; -public class OProfileTargetConnectionListener implements IDeviceListener{ +public class OProfileTargetConnectionListener implements ISelectionListener{ - @Override - public void ConnectionChanged() { - try { +// //@Override +// public void ConnectionChanged() { +// /* +// try { // if(DeviceManager.hasSelectedDevice() == false || !DeviceManager.getSelectedDevice().isReachable()) - { - Oprofile.initialize(); - } - } catch (Exception e) { - - } - } +// { +// Oprofile.initialize(); +// } +// } catch (Exception e) { +// +// } +// */ +// Oprofile.initialize(); +// } + @Override - public void SelectionChanged() { + public void selectionChanged(FileEntry selectedEntry) { // TODO Auto-generated method stub + if(null == ConnectionPlugin.getDefault().getCurrentDevice()){ + Oprofile.initialize(); + } + + } } diff --git a/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OprofileStartup.java b/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OprofileStartup.java index af3318d..e21c236 100644 --- a/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OprofileStartup.java +++ b/org.eclipse.linuxtools.oprofile.launch/src/com/samsung/linuxplatform/oprofile/launch/listen/OprofileStartup.java @@ -23,7 +23,7 @@ package com.samsung.linuxplatform.oprofile.launch.listen; import org.eclipse.ui.IStartup; -import com.samsung.slp.common.conn.device.DeviceLauncherManager; +import com.samsung.slp.common.connection.ConnectionPlugin; public class OprofileStartup implements IStartup { @@ -34,7 +34,6 @@ public class OprofileStartup implements IStartup { // public void earlyStartup() { mDeviceListener = new OProfileTargetConnectionListener(); - DeviceLauncherManager.addDeviceListener(mDeviceListener); + ConnectionPlugin.getDefault().addSelectionListener(mDeviceListener); } - } diff --git a/org.eclipse.linuxtools.valgrind.launch.exe/META-INF/MANIFEST.MF b/org.eclipse.linuxtools.valgrind.launch.exe/META-INF/MANIFEST.MF index 1c2f163..dc6eb67 100644 --- a/org.eclipse.linuxtools.valgrind.launch.exe/META-INF/MANIFEST.MF +++ b/org.eclipse.linuxtools.valgrind.launch.exe/META-INF/MANIFEST.MF @@ -10,8 +10,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.linuxtools.valgrind.launch, org.eclipse.linuxtools.valgrind.ui, com.samsung.slp.nativeide;bundle-version="1.0.0", - com.samsung.slp.common.conn;bundle-version="1.0.0", - com.samsung.slp.common;bundle-version="1.3.20" + com.samsung.slp.common;bundle-version="1.3.20", + com.samsung.slp.common.connection;bundle-version="1.0.0" Bundle-Vendor: Eclipse Linux Tools Bundle-Version: 1.3.18.qualifier Bundle-Localization: plugin diff --git a/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/CommandManager.java b/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/CommandManager.java new file mode 100644 index 0000000..8698506 --- /dev/null +++ b/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/CommandManager.java @@ -0,0 +1,147 @@ +package org.eclipse.linuxtools.valgrind.launch; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import com.samsung.slp.common.connection.ConnectionPlugin; +import com.samsung.slp.sdblib.IDevice; +import com.samsung.slp.sdblib.MultiLineReceiver; +import com.samsung.slp.sdblib.SdbCommandRejectedException; +import com.samsung.slp.sdblib.SdbShellProcess; +import com.samsung.slp.sdblib.ShellCommandUnresponsiveException; +import com.samsung.slp.sdblib.SyncService; +import com.samsung.slp.sdblib.SyncService.SyncResult; +import com.samsung.slp.sdblib.TimeoutException; + +class CommonReceiver extends MultiLineReceiver { + + private String[] output; + + public String[] getOutput() { + return output; + } + + @Override + public void processNewLines(String[] lines) { + output = lines; + } +} + +public class CommandManager { + public static String runShell(String command) { + IDevice device = ConnectionPlugin.getDefault().getCurrentDevice(); + SdbShellProcess sdbShellProc = null; + BufferedReader br = null; + try { + sdbShellProc = device.executeShellCommand(command); + br = new BufferedReader(new InputStreamReader( + sdbShellProc.getInputStream())); + + } catch (IOException e1) { + e1.printStackTrace(); + } + String out = null; + String lastOut = null; + try { + while (null != (out = br.readLine())) { + lastOut = out; + } + } catch (IOException e) { + e.printStackTrace(); + } + return lastOut; + } + + public static String[] runCommandReturningResult(String command) { + IDevice device = ConnectionPlugin.getDefault().getCurrentDevice(); + CommonReceiver commonReceiver = new CommonReceiver(); + try { + device.executeShellCommand(command, commonReceiver); + } catch (TimeoutException e) { + e.printStackTrace(); + } catch (SdbCommandRejectedException e) { + e.printStackTrace(); + } catch (ShellCommandUnresponsiveException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return commonReceiver.getOutput(); + } + + public static void runCommand(String command) { + try { + ConnectionPlugin.getDefault().getCurrentDevice() + .executeShellCommand(command); + } catch (SdbCommandRejectedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static boolean pull(String src, String dest) { + SyncService syncService = null; + try { + syncService = ConnectionPlugin.getDefault().getCurrentDevice() + .getSyncService(); + } catch (TimeoutException e) { + e.printStackTrace(); + } catch (SdbCommandRejectedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + SyncResult result = syncService.pullFile(src, dest, + SyncService.getNullProgressMonitor()); + if (SyncService.RESULT_OK == result.getCode()) { + return true; + } else { + return false; + } + } + + public static boolean push(String src, String dest) { + SyncService syncService = null; + try { + syncService = ConnectionPlugin.getDefault().getCurrentDevice() + .getSyncService(); + } catch (TimeoutException e) { + e.printStackTrace(); + } catch (SdbCommandRejectedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + SyncResult result = syncService.pushFile(src, dest, + SyncService.getNullProgressMonitor()); + if (SyncService.RESULT_OK == result.getCode()) { + return true; + } else { + return false; + } + } + + public static boolean isPathExist(String path) { + String[] result = runCommandReturningResult(path); + if (null != result && result[0].equals("No such file or directory")) { + return false; + } + return true; + } + + public static boolean isEmulator() { + return ConnectionPlugin.getDefault().getCurrentDevice().isEmulator(); + } + + public static boolean isRunSeccessfuly(String[] result) { + if (null != result && result.length > 0 + && !result[result.length - 1].contains("0")) { + return false; + } else { + return true; + } + + } +} diff --git a/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/PathParser.java b/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/PathParser.java deleted file mode 100644 index a090388..0000000 --- a/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/PathParser.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.eclipse.linuxtools.valgrind.launch; - -public class PathParser { - static public String pathParsing(String str){ - if(str.startsWith("/opt/home/root # ")){ - str = str.substring(17,str.length()); - if(str.startsWith("\r\n")){ - str = str.substring(2, str.length()); - } - } - return str; - } -} diff --git a/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/SLPValgrindLaunchDelegate.java b/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/SLPValgrindLaunchDelegate.java index 6522d2e..7836d77 100644 --- a/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/SLPValgrindLaunchDelegate.java +++ b/org.eclipse.linuxtools.valgrind.launch.exe/src/org/eclipse/linuxtools/valgrind/launch/SLPValgrindLaunchDelegate.java @@ -25,33 +25,27 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import org.eclipse.cdt.launch.LaunchUtils; import org.eclipse.cdt.debug.core.CDebugUtils; import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; +import org.eclipse.cdt.launch.LaunchUtils; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; +import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.SubProgressMonitor; -import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchManager; -import org.eclipse.debug.core.model.IProcess; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; - -import org.eclipse.linuxtools.valgrind.launch.PathParser; import org.eclipse.linuxtools.profiling.launch.Messages; -import org.eclipse.linuxtools.valgrind.ui.ValgrindUIPlugin; import org.eclipse.linuxtools.valgrind.core.ValgrindCommand; import org.eclipse.linuxtools.valgrind.core.utils.LaunchConfigurationConstants; +import org.eclipse.linuxtools.valgrind.ui.ValgrindUIPlugin; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; -import com.samsung.slp.common.conn.device.DeviceManager; -import com.samsung.slp.common.conn.machine.IMachine; -import com.samsung.slp.common.conn.session.ISession; import com.samsung.slp.common.properties.InstallPathConfig; import com.samsung.slp.nativeide.launch.SLPLaunchDelegate; import com.samsung.slp.nativeide.launch.SLPLaunchMessages; @@ -61,7 +55,6 @@ public class SLPValgrindLaunchDelegate extends SLPLaunchDelegate { protected IValgrindLaunchDelegate dynamicDelegate; protected ValgrindCommand command; protected String toolID; - protected IProcess process; protected static final String EQUALS = "="; protected static final String EMPTY_STRING = ""; @@ -71,27 +64,30 @@ public class SLPValgrindLaunchDelegate extends SLPLaunchDelegate { protected static final String PACKAGE_NAME = "valgrind"; protected static final String PACKAGE_FILENAME_ARM = "valgrind_armel.deb"; - + @Override - public void launch(ILaunchConfiguration config, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException { + public void launch(ILaunchConfiguration config, String mode, + ILaunch launch, IProgressMonitor monitor) throws CoreException { if (monitor == null) monitor = new NullProgressMonitor(); try { monitor.beginTask(SLPLaunchMessages.LAUNCH_APPLICATION, 30); - + activateProgressView(); - + verifyCProjectConfigurationSettings(config); - verifyDeviceReachability(getProject(config), new SubProgressMonitor(monitor, 9)); - verifyBuildConfiguration(config, mode, new SubProgressMonitor(monitor, 11)); - - ISession session = getLaunchSession(config, new SubProgressMonitor(monitor, 1)); - + verifyDeviceReachability(getProject(config), + new SubProgressMonitor(monitor, 9)); + verifyBuildConfiguration(config, mode, new SubProgressMonitor( + monitor, 11)); + + // getLaunchSession(config, new SubProgressMonitor(monitor, 1)); + if (mode.equals(ILaunchManager.PROFILE_MODE)) { - deployApplication(session, config, new SubProgressMonitor(monitor, 9)); + deployApplication(config, new SubProgressMonitor(monitor, 9)); monitor.worked(1); - - launchApplicationWithValgrind(session, launch, config, monitor); + + launchApplicationWithValgrind(launch, config, monitor); } else { newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, null); } @@ -101,156 +97,219 @@ public class SLPValgrindLaunchDelegate extends SLPLaunchDelegate { } - protected Process launchApplicationWithValgrind(ISession session, ILaunch launch, ILaunchConfiguration config, IProgressMonitor monitor) throws CoreException { - Process remoteShellProcess = null; - + protected void launchApplicationWithValgrind(ILaunch launch, + ILaunchConfiguration config, IProgressMonitor monitor) + throws CoreException { + // Process remoteShellProcess = null; + try { - setEnvironments(config, session); + setEnvironments(config); // find Valgrind String valgrindCmd = "/usr/bin/valgrind"; - String cmd = "ls " + valgrindCmd + CMD_RESULT_CHECK ; - String resultRsp = session.run(cmd, null); - resultRsp = PathParser.pathParsing(resultRsp); - if(!resultRsp.contains("0")) - { - if(DeviceManager.getSelectedDevice().getMachineType().equals(IMachine.VIRTUAL_DEVICE)) - { - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, new Exception("No valgrind in this target (/usr/bin/valgrind). ")); - } - else - { - transferProfilingToolPackage(monitor, session); - installProfilingToolPackage(monitor, session); + String cmd = "ls " + valgrindCmd + CMD_RESULT_CHECK; + // String resultRsp = session.run(cmd, null); + String[] resultRsp = CommandManager.runCommandReturningResult(cmd); + if (!CommandManager.isRunSeccessfuly(resultRsp)) { + if (CommandManager.isEmulator()) { + newCoreException( + SLPLaunchMessages.CANNOT_LAUNCH, + new Exception( + "No valgrind in this target (/usr/bin/valgrind). ")); + } else { + transferProfilingToolPackage(monitor); + installProfilingToolPackage(monitor); } } - - String remoteExePath = getRemoteExePath(config); + + String remoteExePath = getRemoteExePath(config); cmd = "cd " + remoteExePath + CMD_RESULT_CHECK; - resultRsp = session.run(cmd, null); - resultRsp = PathParser.pathParsing(resultRsp); - if(!resultRsp.contains("0")) - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, new Exception("Cannot change to run-directory : " + ". (Return Code: " + resultRsp + ", exepath: " + remoteExePath + ")")); + // resultRsp = session.run(cmd, null); + resultRsp = CommandManager.runCommandReturningResult(cmd); + if (!CommandManager.isRunSeccessfuly(resultRsp)) + newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, + new Exception("Cannot change to run-directory : " + + ". (Return Code: " + resultRsp + + ", exepath: " + remoteExePath + ")")); IPath exeFile = CDebugUtils.verifyProgramPath(config); remoteExePath += exeFile.toFile().getName(); cmd = "ls " + remoteExePath + CMD_RESULT_CHECK; - resultRsp = session.run(cmd, null); - resultRsp = PathParser.pathParsing(resultRsp); - if(!resultRsp.contains("0")) - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, new Exception("Executable does not exist on a valid path. You must install your application before running it.")); - + // resultRsp = session.run(cmd, null); + resultRsp = CommandManager.runCommandReturningResult(cmd); + if (!CommandManager.isRunSeccessfuly(resultRsp)) + newCoreException( + SLPLaunchMessages.CANNOT_LAUNCH, + new Exception( + "Executable does not exist on a valid path. You must install your application before running it.")); + monitor.worked(3); - + // remove and remake valgrind result directory - cmd ="rm -rf"+ " "+ ValgrindLaunchPlugin.RESULT_DIR; - session.run(cmd, null); - cmd ="mkdir -p"+ " "+ValgrindLaunchPlugin.RESULT_DIR; - session.run(cmd, null); + cmd = "rm -rf" + " " + ValgrindLaunchPlugin.RESULT_DIR; + // session.run(cmd, null); + CommandManager.runShell(cmd); + cmd = "mkdir -p" + " " + ValgrindLaunchPlugin.RESULT_DIR; + // session.run(cmd, null); + CommandManager.runShell(cmd); monitor.worked(1); // ask tool (that was launched) extension for arguments toolID = getTool(config); - dynamicDelegate = ValgrindLaunchPlugin.getDefault().getToolDelegate(toolID); + dynamicDelegate = ValgrindLaunchPlugin.getDefault() + .getToolDelegate(toolID); String[] opts = getValgrindArgumentsArray(config); String[] arguments = getProgramArgumentsArray(config); - - ArrayList cmdLine = new ArrayList(1 + arguments.length); + + ArrayList cmdLine = new ArrayList( + 1 + arguments.length); cmdLine.add(valgrindCmd); cmdLine.addAll(Arrays.asList(opts)); cmdLine.add(remoteExePath.toString()); cmdLine.addAll(Arrays.asList(arguments)); - String[] commandArray = (String[]) cmdLine.toArray(new String[cmdLine.size()]); + String[] commandArray = (String[]) cmdLine + .toArray(new String[cmdLine.size()]); // compose full command of valgrind - String fullcommand = ""; - for (int i = 0; i < commandArray.length; i++) { - fullcommand += commandArray[i] + " "; + String fullcommand = ""; + for (int i = 0; i < commandArray.length; i++) { + fullcommand += commandArray[i] + " "; } - config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL, ICDTLaunchConfigurationConstants.USE_TERMINAL_DEFAULT); // what is this? - remoteShellProcess = session.launch(fullcommand, null); - + if (CommandManager.isEmulator() + && Platform.getOS().equals(Platform.OS_WIN32)) { + Exception te; + te = new Exception( + "Can not use valgrind, because the host doesn't support Intel VT"); + throw (te); + } + + config.getAttribute( + ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL, + ICDTLaunchConfigurationConstants.USE_TERMINAL_DEFAULT); // what + // is + // this? + // remoteShellProcess = session.launch(fullcommand, null); + CommandManager.runShell(fullcommand); + monitor.worked(2); - process = DebugPlugin.newProcess(launch, remoteShellProcess, "valgrind"); - + // process = DebugPlugin.newProcess(launch, remoteShellProcess, + // "valgrind"); + // create launch summary string to distinguish this launch String launchStr = createLaunchStr(config); - + // create view ValgrindUIPlugin.getDefault().createView(launchStr, toolID); - + // pass off control to extender - command = new ValgrindCommand(new File(ValgrindLaunchPlugin.RESULT_DIR)); - dynamicDelegate.launch(command, config, launch, new SubProgressMonitor(monitor, 15), remoteShellProcess, session); - + command = new ValgrindCommand(new File( + ValgrindLaunchPlugin.RESULT_DIR)); + dynamicDelegate.launch(command, config, launch, + new SubProgressMonitor(monitor, 15)); + // refresh view ValgrindUIPlugin.getDefault().refreshView(); - + Display.getDefault().syncExec(new Runnable() { public void run() { try { - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(ValgrindUIPlugin.VIEW_ID); + PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getActivePage() + .showView(ValgrindUIPlugin.VIEW_ID); } catch (PartInitException e) { e.printStackTrace(); } } }); - } catch (CoreException e) { - if(session != null) - session.close(); + } catch (CoreException e) { throw e; } catch (Exception e) { - if(remoteShellProcess != null) - remoteShellProcess.destroy(); - if(session != null) - session.close(); - newCoreException(SLPLaunchMessages.CANNOT_LAUNCH, e); } finally { - if(monitor.isCanceled()) - { + if (monitor.isCanceled()) { throw new OperationCanceledException(); - } - else - { + } else { monitor.done(); } } - - return remoteShellProcess; } - private String[] getValgrindArgumentsArray(ILaunchConfiguration config) throws IOException, CoreException { + private String[] getValgrindArgumentsArray(ILaunchConfiguration config) + throws IOException, CoreException { ArrayList opts = new ArrayList(); - opts.add(ValgrindCommand.OPT_TOOL + EQUALS + ValgrindLaunchPlugin.getDefault().getToolName(toolID)); - -// opts.add(ValgrindCommand.OPT_LOGFILE + EQUALS + ValgrindLaunchPlugin.RESULT_DIR + LOG_FILE); - opts.add(ValgrindCommand.OPT_XMLFILE + EQUALS + ValgrindLaunchPlugin.RESULT_DIR + LOG_FILE); -// opts.add(ValgrindCommand.OPT_LOGFILE + EQUALS + "/home" + File.separator + LOG_FILE); - - opts.add(ValgrindCommand.OPT_TRACECHILD + EQUALS + (config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, false) ? YES : NO)); - opts.add(ValgrindCommand.OPT_CHILDSILENT + EQUALS + YES);//(config.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, false) ? YES : NO)); -// opts.add(ValgrindCommand.OPT_TRACKFDS + EQUALS + (config.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, false) ? YES : NO)); -// opts.add(ValgrindCommand.OPT_TIMESTAMP + EQUALS + (config.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, false) ? YES : NO)); - opts.add(ValgrindCommand.OPT_FREERES + EQUALS + (config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_FREERES, true) ? YES : NO)); - - opts.add(ValgrindCommand.OPT_DEMANGLE + EQUALS + (config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, true) ? YES : NO)); - opts.add(ValgrindCommand.OPT_NUMCALLERS + EQUALS + config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, 12)); - opts.add(ValgrindCommand.OPT_ERRLIMIT + EQUALS + (config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, true) ? YES : NO)); - opts.add(ValgrindCommand.OPT_BELOWMAIN + EQUALS + (config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, false) ? YES : NO)); - opts.add(ValgrindCommand.OPT_MAXFRAME + EQUALS + config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, 2000000)); - - String strpath = config.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, EMPTY_STRING); + opts.add(ValgrindCommand.OPT_TOOL + EQUALS + + ValgrindLaunchPlugin.getDefault().getToolName(toolID)); + + // opts.add(ValgrindCommand.OPT_LOGFILE + EQUALS + + // ValgrindLaunchPlugin.RESULT_DIR + LOG_FILE); + opts.add(ValgrindCommand.OPT_XMLFILE + EQUALS + + ValgrindLaunchPlugin.RESULT_DIR + LOG_FILE); + // opts.add(ValgrindCommand.OPT_LOGFILE + EQUALS + "/home" + + // File.separator + LOG_FILE); + + opts.add(ValgrindCommand.OPT_TRACECHILD + + EQUALS + + (config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, + false) ? YES : NO)); + opts.add(ValgrindCommand.OPT_CHILDSILENT + EQUALS + YES);// (config.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, + // false) ? + // YES : + // NO)); + // opts.add(ValgrindCommand.OPT_TRACKFDS + EQUALS + + // (config.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, + // false) ? YES : NO)); + // opts.add(ValgrindCommand.OPT_TIMESTAMP + EQUALS + + // (config.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, + // false) ? YES : NO)); + opts.add(ValgrindCommand.OPT_FREERES + + EQUALS + + (config + .getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_FREERES, + true) ? YES : NO)); + + opts.add(ValgrindCommand.OPT_DEMANGLE + + EQUALS + + (config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, + true) ? YES : NO)); + opts.add(ValgrindCommand.OPT_NUMCALLERS + + EQUALS + + config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, + 12)); + opts.add(ValgrindCommand.OPT_ERRLIMIT + + EQUALS + + (config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, + true) ? YES : NO)); + opts.add(ValgrindCommand.OPT_BELOWMAIN + + EQUALS + + (config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, + false) ? YES : NO)); + opts.add(ValgrindCommand.OPT_MAXFRAME + + EQUALS + + config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, + 2000000)); + + String strpath = config.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, + EMPTY_STRING); if (!strpath.equals(EMPTY_STRING)) { - File suppfile = ValgrindLaunchPlugin.getDefault().parseWSPath(strpath); + File suppfile = ValgrindLaunchPlugin.getDefault().parseWSPath( + strpath); if (suppfile != null) { String escapedPath = null; try { - escapedPath = ValgrindLaunchPlugin.getDefault().escapeAndQuote(suppfile.getCanonicalPath()); + escapedPath = ValgrindLaunchPlugin.getDefault() + .escapeAndQuote(suppfile.getCanonicalPath()); } catch (Exception e) { e.printStackTrace(); } @@ -258,26 +317,31 @@ public class SLPValgrindLaunchDelegate extends SLPLaunchDelegate { } } - opts.addAll(Arrays.asList(dynamicDelegate.getCommandArray(command, config))); + opts.addAll(Arrays.asList(dynamicDelegate.getCommandArray(command, + config))); String[] ret = new String[opts.size()]; return opts.toArray(ret); } - + protected String getTool(ILaunchConfiguration config) throws CoreException { - return config.getAttribute(LaunchConfigurationConstants.ATTR_TOOL, ValgrindLaunchPlugin.TOOL_EXT_DEFAULT); + return config.getAttribute(LaunchConfigurationConstants.ATTR_TOOL, + ValgrindLaunchPlugin.TOOL_EXT_DEFAULT); } protected String getPluginID() { return ValgrindLaunchPlugin.PLUGIN_ID; } - public String[] getProgramArgumentsArray(ILaunchConfiguration config) throws CoreException { + public String[] getProgramArgumentsArray(ILaunchConfiguration config) + throws CoreException { return LaunchUtils.getProgramArgumentsArray(config); } - protected String createLaunchStr(ILaunchConfiguration config) throws CoreException { - return config.getName() + " [" +ValgrindLaunchPlugin.getDefault().getToolName(toolID)+ "] " + process.getLabel(); + protected String createLaunchStr(ILaunchConfiguration config) + throws CoreException { + return config.getName() + " [" + + ValgrindLaunchPlugin.getDefault().getToolName(toolID) + "] "; } /** @@ -287,45 +351,61 @@ public class SLPValgrindLaunchDelegate extends SLPLaunchDelegate { * @param session * connection session to the target or simulator * @return void - * + * * @exception CoreException * if unable to transfer a package */ - public void transferProfilingToolPackage(IProgressMonitor monitor, ISession session) throws CoreException { + public void transferProfilingToolPackage(IProgressMonitor monitor) + throws CoreException { try { - monitor.beginTask(Messages.getString("ProfileLaunch.TRANSFER_PROFILING_TOOL"), 1); + monitor.beginTask( + Messages.getString("ProfileLaunch.TRANSFER_PROFILING_TOOL"), + 1); // test whether valgrind package exist or not String sdkInstallPath = InstallPathConfig.getSDKPath(); - String toolPkgPath = sdkInstallPath + "/SDK/profiling-tool/" + PACKAGE_FILENAME_ARM; + String toolPkgPath = sdkInstallPath + "/SDK/profiling-tool/" + + PACKAGE_FILENAME_ARM; File toolPkg = new File(toolPkgPath); - if(toolPkg == null || !toolPkg.exists()) - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), - new Exception("Tool package path (" + toolPkgPath + ") is not available.")); - + if (toolPkg == null || !toolPkg.exists()) + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), + new Exception("Tool package path (" + toolPkgPath + + ") is not available.")); + String destDirectoryPath = TEMPORARY_PKG_PATH; - if (!session.isPathExist(destDirectoryPath)) { - String command = MAKE_DIRECTORY_CMD + destDirectoryPath + CMD_RESULT_CHECK; - String result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), - new Exception("Destination path (" + destDirectoryPath + ") in not exist.")); + if (!CommandManager.isPathExist(destDirectoryPath)) { + String command = MAKE_DIRECTORY_CMD + destDirectoryPath + + CMD_RESULT_CHECK; + // String result = session.run(command, null); + String[] result = CommandManager + .runCommandReturningResult(command); + if (!CommandManager.isRunSeccessfuly(result)) + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), + new Exception("Destination path (" + + destDirectoryPath + ") in not exist.")); } String srcFilePath = toolPkg.getAbsoluteFile().getCanonicalPath(); - String destFilePath = destDirectoryPath + toolPkg.getAbsoluteFile().getName(); - - boolean isSuccess = session.transferFile(srcFilePath, destFilePath); - + String destFilePath = destDirectoryPath + + toolPkg.getAbsoluteFile().getName(); + + // boolean isSuccess = session.transferFile(srcFilePath, + // destFilePath); + boolean isSuccess = CommandManager.push(srcFilePath, destFilePath); + if (isSuccess == false) - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), - new Exception("source path (" + srcFilePath + "), dest path (" + destFilePath +")")); + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), + new Exception("source path (" + srcFilePath + + "), dest path (" + destFilePath + ")")); } catch (CoreException e) { throw e; } catch (Exception e) { - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), e); + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_TRANSFER"), e); } finally { monitor.done(); } @@ -339,51 +419,61 @@ public class SLPValgrindLaunchDelegate extends SLPLaunchDelegate { * @param pkgmgr * instance which contains resources and control information * @return void - * + * * @exception CoreException * if unable to install a package */ - public void installProfilingToolPackage(IProgressMonitor monitor, ISession session) throws CoreException { + public void installProfilingToolPackage(IProgressMonitor monitor) + throws CoreException { try { - monitor.beginTask(Messages.getString("ProfileLaunch.INSTALL_PROFILING_TOOL"), 2); + monitor.beginTask( + Messages.getString("ProfileLaunch.INSTALL_PROFILING_TOOL"), + 2); String packageDirectory = TEMPORARY_PKG_PATH; - String command = CHANGE_DIRECTORY_CMD + packageDirectory + CMD_RESULT_CHECK; - String result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), + String command = CHANGE_DIRECTORY_CMD + packageDirectory + + CMD_RESULT_CHECK; + // String result = session.run(command, null); + String[] result = CommandManager.runCommandReturningResult(command); + if (null != result && result.length > 0 && !result[0].contains("0")) + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), new Exception("command is " + command)); monitor.worked(1); - + // remount file system command = "mount -o remount,rw /" + CMD_RESULT_CHECK; - result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), - new Exception("command is " + command)); + // result = session.run(command, null); + result = CommandManager.runCommandReturningResult(command); + if (null != result && result.length > 0 && !result[0].contains("0")) + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), + new Exception("command is " + command)); // install new application - command = PKG_TOOL_CMD + PKG_TOOL_INSTALL_OPTION + PACKAGE_FILENAME_ARM + CMD_RESULT_CHECK; - result = session.run(command, null); - result = PathParser.pathParsing(result); - if(!result.contains("0")) - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), - new Exception("command is " + command)); + command = PKG_TOOL_CMD + PKG_TOOL_INSTALL_OPTION + packageDirectory + + PACKAGE_FILENAME_ARM + CMD_RESULT_CHECK; + // result = session.run(command, null); + String resultStr = CommandManager.runShell(command); + if (null != resultStr && resultStr.length() > 0 + && !resultStr.equals("0")) + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), + new Exception("command is " + command)); monitor.worked(1); // remount file system command = "mount -o remount,ro /" + CMD_RESULT_CHECK; - result = session.run(command, null); - result = PathParser.pathParsing(result); + // result = session.run(command, null); + result = CommandManager.runCommandReturningResult(command); } catch (CoreException e) { throw e; } catch (Exception e) { - newCoreException(Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), e); + newCoreException( + Messages.getString("ProfileLaunch.FAIL_TO_INSTALL"), e); } finally { monitor.done(); } } - + } diff --git a/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/IValgrindLaunchDelegate.java b/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/IValgrindLaunchDelegate.java index cfd6747..5ffd3e8 100644 --- a/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/IValgrindLaunchDelegate.java +++ b/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/IValgrindLaunchDelegate.java @@ -15,8 +15,6 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.linuxtools.valgrind.core.ValgrindCommand; - -import com.samsung.slp.common.conn.session.ISession; /** * Interface for declaring a tool-specific delegate for a Valgrind * LaunchConfiguration. @@ -35,7 +33,7 @@ public interface IValgrindLaunchDelegate { * @throws CoreException - if this method fails * @throws Exception */ - public void launch(ValgrindCommand command, ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor,Process remoteShellProcess, ISession session) throws CoreException, Exception; + public void launch(ValgrindCommand command, ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor) throws CoreException, Exception; /** * Parses attributes of an ILaunchConfiguration into an array diff --git a/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/ValgrindOptionsTab.java b/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/ValgrindOptionsTab.java index 92bfd4a..9dda778 100644 --- a/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/ValgrindOptionsTab.java +++ b/org.eclipse.linuxtools.valgrind.launch/src/org/eclipse/linuxtools/valgrind/launch/ValgrindOptionsTab.java @@ -7,11 +7,13 @@ * * Contributors: * Elliott Baron - initial API and implementation - *******************************************************************************/ + *******************************************************************************/ package org.eclipse.linuxtools.valgrind.launch; import java.io.File; +import javax.swing.ButtonGroup; + import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; @@ -55,21 +57,20 @@ import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.views.navigator.ResourceComparator; - public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ - //Start controls + // Start controls private ScrolledComposite scrContainer; - - protected Button collectData1Button; - protected Button collectData2Button; - protected Button mempsButton; - + + protected Button collectData1Button; + protected Button collectData2Button; + protected Button mempsButton; + // General controls protected Button traceChildrenButton; protected Button childSilentButton; - // protected Button trackFdsButton; - // protected Button timeStampButton; + // protected Button trackFdsButton; + // protected Button timeStampButton; protected Button runFreeresButton; protected Button demangleButton; protected Spinner numCallersSpinner; @@ -84,7 +85,7 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { protected Composite top; protected ScrolledComposite scrollTop; - + protected ILaunchConfigurationWorkingCopy launchConfigurationWorkingCopy; protected ILaunchConfiguration launchConfiguration; @@ -94,8 +95,8 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { protected boolean isInitializing = false; protected boolean initDefaults = false; - private boolean canInitialize; //bery 20090715 - + private boolean canInitialize; // bery 20090715 + protected SelectionListener selectListener = new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -104,42 +105,41 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { }; protected ModifyListener modifyListener = new ModifyListener() { public void modifyText(ModifyEvent e) { - updateLaunchConfigurationDialog(); - } + updateLaunchConfigurationDialog(); + } }; public void createControl(Composite parent) { /** * Scrollable Options tab is implemented . */ - scrContainer = new ScrolledComposite( parent, SWT.V_SCROLL | SWT.H_SCROLL ); + scrContainer = new ScrolledComposite(parent, SWT.V_SCROLL + | SWT.H_SCROLL); FillLayout flayout = new FillLayout(); scrContainer.setLayout(flayout); GridData gd = new GridData(GridData.FILL_BOTH); scrContainer.setLayoutData(gd); scrContainer.setExpandHorizontal(true); scrContainer.setExpandVertical(true); - - top = new Composite( scrContainer, SWT.NONE ); + + top = new Composite(scrContainer, SWT.NONE); setControl(scrContainer); top.setLayout(new GridLayout()); // changed by greatim at 2011.06.01 for fresh ide - // TODO : change help context id (temporarily empty string) + // TODO : change help context id (temporarily empty string) PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), ""); //$NON-NLS-1$ - -// if(TargetConnectionControl.isSimulator()){ - canInitialize = true; -/* - }else{ - String error = "The Valgrind does not support the ARM target "; - String reason = "An error occurred when the real target is selected. Please check whether your target is Simulator(i686)"; - showErrorDialog(error, reason , null); //$NON-NLS-1$ - canInitialize = false; - // return; - } -*/ + + // if(TargetConnectionControl.isSimulator()){ + canInitialize = true; + /* + * }else{ String error = + * "The Valgrind does not support the ARM target "; String reason = + * "An error occurred when the real target is selected. Please check whether your target is Simulator(i686)" + * ; showErrorDialog(error, reason , null); //$NON-NLS-1$ canInitialize + * = false; // return; } + */ createVerticalSpacer(top, 1); createVerticalSpacer(top, 1); @@ -147,23 +147,21 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { TabFolder optionsFolder = new TabFolder(top, SWT.BORDER); optionsFolder.setLayoutData(new GridData(GridData.FILL_BOTH)); - //start tab add + // start tab add - TabItem startTab = new TabItem(optionsFolder, SWT.NONE); - startTab.setText(Messages.getString("ValgrindOptionsTab.Start")); //$NON-NLS-1$ + TabItem startTab = new TabItem(optionsFolder, SWT.NONE); + startTab.setText(Messages.getString("ValgrindOptionsTab.Start")); //$NON-NLS-1$ - Composite startTop = new Composite(optionsFolder, SWT.NONE); - startTop.setLayout(new GridLayout()); - startTop.setLayoutData(new GridData(GridData.FILL_BOTH)); + Composite startTop = new Composite(optionsFolder, SWT.NONE); + startTop.setLayout(new GridLayout()); + startTop.setLayoutData(new GridData(GridData.FILL_BOTH)); - createStartOptions(startTop,true); - createVerticalSpacer(startTop, 1); - startTab.setControl(startTop); + createStartOptions(startTop, true); + createVerticalSpacer(startTop, 1); + startTab.setControl(startTop); - //start tab add by bery + // start tab add by bery - - // "general" tab TabItem generalTab = new TabItem(optionsFolder, SWT.NONE); generalTab.setText(Messages.getString("ValgrindOptionsTab.General")); //$NON-NLS-1$ @@ -180,8 +178,8 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { createVerticalSpacer(generalTop, 1); - createSuppressionsOption(generalTop); - + createSuppressionsOption(generalTop); + generalTab.setControl(generalTop); // "tool" tab @@ -194,253 +192,260 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { toolTab.setControl(dynamicTabHolder); - scrContainer.setContent( top ); - + scrContainer.setContent(top); + scrContainer.setMinSize(top.computeSize(SWT.DEFAULT, SWT.DEFAULT)); } + /* + * private void createToolCombo(Composite top) { Composite comboTop = new + * Composite(top, SWT.NONE); comboTop.setLayout(new GridLayout(2, false)); + * Label toolLabel = new Label(comboTop, SWT.NONE); + * toolLabel.setText(Messages.getString("ValgrindOptionsTab.Tool_to_run")); + * //$NON-NLS-1$ toolsCombo = new Combo(comboTop, SWT.READ_ONLY); tools = + * ValgrindLaunchPlugin.getDefault().getRegisteredToolIDs(); + * + * String[] names = new String[tools.length]; for (int i = 0; i < + * names.length; i++) { names[i] = + * ValgrindLaunchPlugin.getDefault().getToolName(tools[i]); } + * toolsCombo.setItems(names); + * + * toolsCombo.addSelectionListener(new SelectionAdapter() { + * + * @Override public void widgetDefaultSelected(SelectionEvent e) { + * widgetSelected(e); } + * + * @Override public void widgetSelected(SelectionEvent e) { // user selected + * change, set defaults in new tool if (!isInitializing) { initDefaults = + * true; int ix = toolsCombo.getSelectionIndex(); tool = tools[ix]; + * handleToolChanged(); updateLaunchConfigurationDialog(); } } }); } + */ + // bery + protected void createStartOptions(Composite top, boolean selected) { -/* - private void createToolCombo(Composite top) { - Composite comboTop = new Composite(top, SWT.NONE); - comboTop.setLayout(new GridLayout(2, false)); - Label toolLabel = new Label(comboTop, SWT.NONE); - toolLabel.setText(Messages.getString("ValgrindOptionsTab.Tool_to_run")); //$NON-NLS-1$ - toolsCombo = new Combo(comboTop, SWT.READ_ONLY); tools = ValgrindLaunchPlugin.getDefault().getRegisteredToolIDs(); - String[] names = new String[tools.length]; + final String[] names = new String[tools.length]; for (int i = 0; i < names.length; i++) { names[i] = ValgrindLaunchPlugin.getDefault().getToolName(tools[i]); } - toolsCombo.setItems(names); - toolsCombo.addSelectionListener(new SelectionAdapter() { + Group startGroup = new Group(top, SWT.NONE); + startGroup.setLayout(new GridLayout()); + startGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + startGroup.setText(Messages + .getString("ValgrindOptionsTab.Collect_Options")); //$NON-NLS-1$ + + Composite startTop = new Composite(startGroup, SWT.NONE); + startTop.setLayout(new GridLayout(8, false)); + startTop.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + // Label collectData1Label = new Label(startTop, SWT.NONE); + // collectData1Label.setText(Messages.getString("ValgrindOptionsTab.collect_data1")); //$NON-NLS-1$ + collectData1Button = new Button(startTop, SWT.RADIO); + collectData1Button.setText(Messages + .getString("ValgrindOptionsTab.collect_data1")); //$NON-NLS-1$ + + // collectData1Button.addSelectionListener(selectListener); + + collectData1Button.addSelectionListener(new SelectionAdapter() { @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } + @Override public void widgetSelected(SelectionEvent e) { // user selected change, set defaults in new tool + // bery added at 20090715---------------------- + // if(TargetConnectionControl.isSimulator()){ + canInitialize = true; + /* + * }else{ String error = + * "The Valgrind does not support the ARM target "; String + * reason = + * "An error occurred when the real target is selected. Please check whether your target is Simulator(i686)" + * ; showErrorDialog(error, reason , null); //$NON-NLS-1$ + * canInitialize = false; return; } + */ + // -------------------------------------- + // bery added at 20090715-------------------------------- + if (!canInitialize) { + return; + } + // -------------------------------------- + if (!isInitializing) { - initDefaults = true; - int ix = toolsCombo.getSelectionIndex(); - tool = tools[ix]; + // initDefaults = true; + tool = "org.eclipse.linuxtools.valgrind.launch.memcheck"; + // tool = tools[0]; handleToolChanged(); updateLaunchConfigurationDialog(); } } }); - } -*/ - //bery - protected void createStartOptions(Composite top, boolean selected) { - - tools = ValgrindLaunchPlugin.getDefault().getRegisteredToolIDs(); - - - final String[] names = new String[tools.length]; - for (int i = 0; i < names.length; i++) { - names[i] = ValgrindLaunchPlugin.getDefault().getToolName(tools[i]); - } - - Group startGroup = new Group(top, SWT.NONE); - startGroup.setLayout(new GridLayout()); - startGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - startGroup.setText(Messages.getString("ValgrindOptionsTab.Collect_Options")); //$NON-NLS-1$ - - Composite startTop = new Composite(startGroup, SWT.NONE ); - startTop.setLayout(new GridLayout(8, false)); - startTop.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - -// Label collectData1Label = new Label(startTop, SWT.NONE); - // collectData1Label.setText(Messages.getString("ValgrindOptionsTab.collect_data1")); //$NON-NLS-1$ - collectData1Button = new Button(startTop, SWT.RADIO); - collectData1Button.setText(Messages.getString("ValgrindOptionsTab.collect_data1")); //$NON-NLS-1$ - - - // collectData1Button.addSelectionListener(selectListener); - - collectData1Button.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetDefaultSelected(SelectionEvent e) { - widgetSelected(e); - } - @Override - public void widgetSelected(SelectionEvent e) { - // user selected change, set defaults in new tool - //bery added at 20090715---------------------- -// if(TargetConnectionControl.isSimulator()){ - canInitialize = true; -/* - }else{ - String error = "The Valgrind does not support the ARM target "; - String reason = "An error occurred when the real target is selected. Please check whether your target is Simulator(i686)"; - showErrorDialog(error, reason , null); //$NON-NLS-1$ - canInitialize = false; - return; - } -*/ - //-------------------------------------- - //bery added at 20090715-------------------------------- - if(!canInitialize){ - return; - } - //-------------------------------------- - - - if (!isInitializing) { - // initDefaults = true; - tool = "org.eclipse.linuxtools.valgrind.launch.memcheck"; - //tool = tools[0]; - handleToolChanged(); - updateLaunchConfigurationDialog(); - } - } - }); - - // Must be on to prevent mangled XML output -// Label collectData2Label = new Label(startTop, SWT.NONE); - //collectData2Label.setText(Messages.getString("ValgrindOptionsTab.collect_data2")); //$NON-NLS-1$ - collectData2Button = new Button(startTop, SWT.RADIO); - collectData2Button.setText(Messages.getString("ValgrindOptionsTab.collect_data2")); //$NON-NLS-1$ - // collectData2Button.addSelectionListener(selectListener); - - collectData2Button.addSelectionListener(new SelectionAdapter() { -// @Override -// public void widgetDefaultSelected(SelectionEvent e) { -// widgetSelected(e); -// } + + // Must be on to prevent mangled XML output + // Label collectData2Label = new Label(startTop, SWT.NONE); + //collectData2Label.setText(Messages.getString("ValgrindOptionsTab.collect_data2")); //$NON-NLS-1$ + collectData2Button = new Button(startTop, SWT.RADIO); + collectData2Button.setText(Messages + .getString("ValgrindOptionsTab.collect_data2")); //$NON-NLS-1$ + // collectData2Button.addSelectionListener(selectListener); + + collectData2Button.addSelectionListener(new SelectionAdapter() { + // @Override + // public void widgetDefaultSelected(SelectionEvent e) { + // widgetSelected(e); + // } @Override - public void widgetSelected(SelectionEvent e) { - // user selected change, set defaults in new tool - - if (!isInitializing) { - // initDefaults = false; - tool = "org.eclipse.linuxtools.valgrind.launch.massif"; - // tool = tools[1]; - - handleToolChanged(); - updateLaunchConfigurationDialog(); - } - } - }); - -} + public void widgetSelected(SelectionEvent e) { + // user selected change, set defaults in new tool - - protected void createBasicOptions(Composite top) { + if (!isInitializing) { + // initDefaults = false; + tool = "org.eclipse.linuxtools.valgrind.launch.massif"; + // tool = tools[1]; + + handleToolChanged(); + updateLaunchConfigurationDialog(); + } + } + }); + + } + + protected void createBasicOptions(Composite top) { Group basicGroup = new Group(top, SWT.NONE); basicGroup.setLayout(new GridLayout()); basicGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - basicGroup.setText(Messages.getString("ValgrindOptionsTab.Basic_Options")); //$NON-NLS-1$ + basicGroup.setText(Messages + .getString("ValgrindOptionsTab.Basic_Options")); //$NON-NLS-1$ Composite basicTop = new Composite(basicGroup, SWT.NONE); basicTop.setLayout(new GridLayout(2, true)); basicTop.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); traceChildrenButton = new Button(basicTop, SWT.CHECK); - traceChildrenButton.setText(Messages.getString("ValgrindOptionsTab.trace_children")); //$NON-NLS-1$ + traceChildrenButton.setText(Messages + .getString("ValgrindOptionsTab.trace_children")); //$NON-NLS-1$ traceChildrenButton.addSelectionListener(selectListener); - traceChildrenButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + traceChildrenButton + .setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // Must be on to prevent mangled XML output childSilentButton = new Button(basicTop, SWT.CHECK); - childSilentButton.setText(Messages.getString("ValgrindOptionsTab.child_silent")); //$NON-NLS-1$ + childSilentButton.setText(Messages + .getString("ValgrindOptionsTab.child_silent")); //$NON-NLS-1$ childSilentButton.setSelection(true); childSilentButton.setEnabled(false); childSilentButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); runFreeresButton = new Button(basicTop, SWT.CHECK); - runFreeresButton.setText(Messages.getString("ValgrindOptionsTab.run_freeres")); //$NON-NLS-1$ + runFreeresButton.setText(Messages + .getString("ValgrindOptionsTab.run_freeres")); //$NON-NLS-1$ runFreeresButton.addSelectionListener(selectListener); runFreeresButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); } - - - protected void createErrorOptions(Composite top) { + protected void createErrorOptions(Composite top) { Group errorGroup = new Group(top, SWT.NONE); errorGroup.setLayout(new GridLayout()); errorGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - errorGroup.setText(Messages.getString("ValgrindOptionsTab.Error_Options")); //$NON-NLS-1$ + errorGroup.setText(Messages + .getString("ValgrindOptionsTab.Error_Options")); //$NON-NLS-1$ Composite errorTop = new Composite(errorGroup, SWT.NONE); errorTop.setLayout(new GridLayout(2, true)); errorTop.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); demangleButton = new Button(errorTop, SWT.CHECK); - demangleButton.setText(Messages.getString("ValgrindOptionsTab.demangle")); //$NON-NLS-1$ + demangleButton.setText(Messages + .getString("ValgrindOptionsTab.demangle")); //$NON-NLS-1$ demangleButton.addSelectionListener(selectListener); demangleButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Composite numCallersTop = new Composite(errorTop, SWT.NONE); numCallersTop.setLayout(new GridLayout(2, false)); Label numCallersLabel = new Label(numCallersTop, SWT.NONE); - numCallersLabel.setText(Messages.getString("ValgrindOptionsTab.num_callers")); //$NON-NLS-1$ + numCallersLabel.setText(Messages + .getString("ValgrindOptionsTab.num_callers")); //$NON-NLS-1$ numCallersSpinner = new Spinner(numCallersTop, SWT.BORDER); numCallersSpinner.setMaximum(50); numCallersSpinner.addModifyListener(modifyListener); numCallersSpinner.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); errorLimitButton = new Button(errorTop, SWT.CHECK); - errorLimitButton.setText(Messages.getString("ValgrindOptionsTab.limit_errors")); //$NON-NLS-1$ + errorLimitButton.setText(Messages + .getString("ValgrindOptionsTab.limit_errors")); //$NON-NLS-1$ errorLimitButton.addSelectionListener(selectListener); errorLimitButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); showBelowMainButton = new Button(errorTop, SWT.CHECK); - showBelowMainButton.setText(Messages.getString("ValgrindOptionsTab.show_errors_below_main")); //$NON-NLS-1$ + showBelowMainButton.setText(Messages + .getString("ValgrindOptionsTab.show_errors_below_main")); //$NON-NLS-1$ showBelowMainButton.addSelectionListener(selectListener); - showBelowMainButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + showBelowMainButton + .setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Composite maxStackFrameTop = new Composite(errorTop, SWT.NONE); maxStackFrameTop.setLayout(new GridLayout(2, false)); Label maxStackFrameLabel = new Label(maxStackFrameTop, SWT.NONE); - maxStackFrameLabel.setText(Messages.getString("ValgrindOptionsTab.max_size_of_stack_frame")); //$NON-NLS-1$ + maxStackFrameLabel.setText(Messages + .getString("ValgrindOptionsTab.max_size_of_stack_frame")); //$NON-NLS-1$ maxStackFrameSpinner = new Spinner(maxStackFrameTop, SWT.BORDER); maxStackFrameSpinner.setMaximum(Integer.MAX_VALUE); - maxStackFrameSpinner.addModifyListener(modifyListener); - maxStackFrameSpinner.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + maxStackFrameSpinner.addModifyListener(modifyListener); + maxStackFrameSpinner.setLayoutData(new GridData( + GridData.FILL_HORIZONTAL)); } - - - protected void createSuppressionsOption(Composite top) { + protected void createSuppressionsOption(Composite top) { Group suppGroup = new Group(top, SWT.NONE); suppGroup.setLayout(new GridLayout()); suppGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - suppGroup.setText(Messages.getString("ValgrindOptionsTab.Suppressions")); //$NON-NLS-1$ - - Composite browseTop = new Composite(suppGroup, SWT.NONE); + suppGroup + .setText(Messages.getString("ValgrindOptionsTab.Suppressions")); //$NON-NLS-1$ + + Composite browseTop = new Composite(suppGroup, SWT.NONE); browseTop.setLayout(new GridLayout(4, false)); GridData browseData = new GridData(GridData.FILL_HORIZONTAL); browseTop.setLayoutData(browseData); Label suppFileLabel = new Label(browseTop, SWT.NONE); - suppFileLabel.setText(Messages.getString("ValgrindOptionsTab.suppressions_file")); //$NON-NLS-1$ - + suppFileLabel.setText(Messages + .getString("ValgrindOptionsTab.suppressions_file")); //$NON-NLS-1$ + suppFileText = new Text(browseTop, SWT.BORDER); suppFileText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); suppFileText.addModifyListener(modifyListener); - Button workspaceBrowseButton = createPushButton(browseTop, Messages.getString("ValgrindOptionsTab.Workspace"), null); //$NON-NLS-1$ + Button workspaceBrowseButton = createPushButton(browseTop, + Messages.getString("ValgrindOptionsTab.Workspace"), null); //$NON-NLS-1$ workspaceBrowseButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { - ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), new WorkbenchLabelProvider(), new WorkbenchContentProvider()); - dialog.setTitle(Messages.getString("ValgrindOptionsTab.Select_a_Resource")); //$NON-NLS-1$ - dialog.setMessage(Messages.getString("ValgrindOptionsTab.Select_a_Suppressions_File")); //$NON-NLS-1$ - dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); - dialog.setComparator(new ResourceComparator(ResourceComparator.NAME)); + ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( + getShell(), new WorkbenchLabelProvider(), + new WorkbenchContentProvider()); + dialog.setTitle(Messages + .getString("ValgrindOptionsTab.Select_a_Resource")); //$NON-NLS-1$ + dialog.setMessage(Messages + .getString("ValgrindOptionsTab.Select_a_Suppressions_File")); //$NON-NLS-1$ + dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); + dialog.setComparator(new ResourceComparator( + ResourceComparator.NAME)); if (dialog.open() == IDialogConstants.OK_ID) { IResource resource = (IResource) dialog.getFirstResult(); String arg = resource.getFullPath().toString(); - String fileLoc = VariablesPlugin.getDefault().getStringVariableManager().generateVariableExpression("workspace_loc", arg); //$NON-NLS-1$ + String fileLoc = VariablesPlugin.getDefault() + .getStringVariableManager() + .generateVariableExpression("workspace_loc", arg); //$NON-NLS-1$ suppFileText.setText(fileLoc); } } }); - Button fileBrowseButton = createPushButton(browseTop, Messages.getString("ValgrindOptionsTab.File_System"), null); //$NON-NLS-1$ + Button fileBrowseButton = createPushButton(browseTop, + Messages.getString("ValgrindOptionsTab.File_System"), null); //$NON-NLS-1$ fileBrowseButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { String filePath = suppFileText.getText(); @@ -452,6 +457,7 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { } }); } + protected void handleToolChanged() { try { // create dynamicTab @@ -461,7 +467,8 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { if (launchConfiguration.isWorkingCopy()) { launchConfigurationWorkingCopy = (ILaunchConfigurationWorkingCopy) launchConfiguration; } else { - launchConfigurationWorkingCopy = launchConfiguration.getWorkingCopy(); + launchConfigurationWorkingCopy = launchConfiguration + .getWorkingCopy(); } } @@ -469,7 +476,7 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { // user changed tool, not just restoring state if (initDefaults) { dynamicTab.setDefaults(launchConfigurationWorkingCopy); - } + } initDefaults = false; dynamicTab.initializeFrom(launchConfigurationWorkingCopy); } catch (CoreException e) { @@ -484,7 +491,11 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { dynamicTab = ValgrindLaunchPlugin.getDefault().getToolPage(tool); if (dynamicTab == null) { - throw new CoreException(new Status(IStatus.ERROR, ValgrindLaunchPlugin.PLUGIN_ID, Messages.getString("ValgrindOptionsTab.No_options_tab_found") + tool)); //$NON-NLS-1$ + throw new CoreException( + new Status( + IStatus.ERROR, + ValgrindLaunchPlugin.PLUGIN_ID, + Messages.getString("ValgrindOptionsTab.No_options_tab_found") + tool)); //$NON-NLS-1$ } dynamicTab.setLaunchConfigurationDialog(getLaunchConfigurationDialog()); dynamicTab.createControl(dynamicTabHolder); @@ -498,32 +509,38 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { @Override public Image getImage() { - return ValgrindLaunchPlugin.imageDescriptorFromPlugin(ValgrindLaunchPlugin.PLUGIN_ID, "icons/valgrind-icon.png").createImage(); //$NON-NLS-1$ + return ValgrindLaunchPlugin + .imageDescriptorFromPlugin(ValgrindLaunchPlugin.PLUGIN_ID, + "icons/valgrind-icon.png").createImage(); //$NON-NLS-1$ } public void initializeFrom(ILaunchConfiguration configuration) { - + isInitializing = true; getControl().setRedraw(false); launchConfiguration = configuration; launchConfigurationWorkingCopy = null; - try { - tool = configuration.getAttribute(LaunchConfigurationConstants.ATTR_TOOL, ValgrindLaunchPlugin.TOOL_EXT_DEFAULT); - + tool = configuration.getAttribute( + LaunchConfigurationConstants.ATTR_TOOL, + ValgrindLaunchPlugin.TOOL_EXT_DEFAULT); + int select = -1; - if (tool.contains("memcheck") ) { + if (tool.contains("memcheck")) { select = 0; - }else if (tool.contains("massif")) { + } else if (tool.contains("massif")) { select = 1; } - if (select ==0) { + if (select == 0) { collectData1Button.setSelection(true); - }else if (select ==1){ + collectData2Button.setSelection(false); + } else if (select == 1) { collectData2Button.setSelection(true); - } + collectData1Button.setSelection(false); + + } handleToolChanged(); initializeGeneral(configuration); @@ -534,25 +551,37 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { isInitializing = false; } - protected void initializeGeneral(ILaunchConfiguration configuration) throws CoreException { - - - traceChildrenButton.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, false)); - // childSilentButton.setSelection(configuration.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, false)); - // trackFdsButton.setSelection(configuration.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, false)); - // timeStampButton.setSelection(configuration.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, false)); - runFreeresButton.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_FREERES, true)); - demangleButton.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, true)); - numCallersSpinner.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, 12)); - errorLimitButton.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, true)); - showBelowMainButton.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, false)); - maxStackFrameSpinner.setSelection(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, 2000000)); - suppFileText.setText(configuration.getAttribute(LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, EMPTY_STRING)); + protected void initializeGeneral(ILaunchConfiguration configuration) + throws CoreException { + + traceChildrenButton.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, false)); + // childSilentButton.setSelection(configuration.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, + // false)); + // trackFdsButton.setSelection(configuration.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, + // false)); + // timeStampButton.setSelection(configuration.getAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, + // false)); + runFreeresButton.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_FREERES, true)); + demangleButton.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, true)); + numCallersSpinner.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, 12)); + errorLimitButton.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, true)); + showBelowMainButton.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, false)); + maxStackFrameSpinner.setSelection(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, 2000000)); + suppFileText.setText(configuration.getAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, + EMPTY_STRING)); } @Override public boolean isValid(ILaunchConfiguration launchConfig) { - + setErrorMessage(null); boolean result = false; @@ -567,10 +596,10 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { boolean result = false; if (strpath.equals(EMPTY_STRING)) { result = true; - } - else { + } else { try { - File suppfile = ValgrindLaunchPlugin.getDefault().parseWSPath(strpath); + File suppfile = ValgrindLaunchPlugin.getDefault().parseWSPath( + strpath); if (suppfile != null && suppfile.exists()) { result = true; } @@ -578,17 +607,21 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { e.printStackTrace(); } } - + if (!result) { - setErrorMessage(NLS.bind(Messages.getString("ValgrindOptionsTab.suppressions_file_doesnt_exist"), strpath)); //$NON-NLS-1$ + setErrorMessage(NLS + .bind(Messages + .getString("ValgrindOptionsTab.suppressions_file_doesnt_exist"), strpath)); //$NON-NLS-1$ } return result; } public void performApply(ILaunchConfigurationWorkingCopy configuration) { - configuration.setAttribute(LaunchConfigurationConstants.ATTR_TOOL, tool); + configuration + .setAttribute(LaunchConfigurationConstants.ATTR_TOOL, tool); // commented by greatim at 2011.06.01 for fresh ide -// configuration.setAttribute(ISMLCDTLaunchConstants.ATTR_LAUNCH_MODE, "valgrind" ); + // configuration.setAttribute(ISMLCDTLaunchConstants.ATTR_LAUNCH_MODE, + // "valgrind" ); applyGeneralAttributes(configuration); if (dynamicTab != null) { dynamicTab.performApply(configuration); @@ -597,23 +630,42 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { protected void applyGeneralAttributes( ILaunchConfigurationWorkingCopy configuration) { - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, traceChildrenButton.getSelection()); - // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, childSilentButton.getSelection()); - // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, trackFdsButton.getSelection()); - // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, timeStampButton.getSelection()); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_FREERES, runFreeresButton.getSelection()); - - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, demangleButton.getSelection()); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, numCallersSpinner.getSelection()); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, errorLimitButton.getSelection()); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, showBelowMainButton.getSelection()); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, maxStackFrameSpinner.getSelection()); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, suppFileText.getText()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, + traceChildrenButton.getSelection()); + // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, + // childSilentButton.getSelection()); + // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, + // trackFdsButton.getSelection()); + // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, + // timeStampButton.getSelection()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_FREERES, + runFreeresButton.getSelection()); + + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, + demangleButton.getSelection()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, + numCallersSpinner.getSelection()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, + errorLimitButton.getSelection()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, + showBelowMainButton.getSelection()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, + maxStackFrameSpinner.getSelection()); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, + suppFileText.getText()); } public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { launchConfigurationWorkingCopy = configuration; - + setDefaultGeneralAttributes(configuration); if (dynamicTab != null) { dynamicTab.setDefaults(configuration); @@ -623,23 +675,37 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { public static void setDefaultGeneralAttributes( ILaunchConfigurationWorkingCopy configuration) { - + // commented by greatim at 2011.06.01 for fresh ide -// configuration.setAttribute(ISMLCDTLaunchConstants.ATTR_LAUNCH_MODE, "valgrind"); - - configuration.setAttribute(LaunchConfigurationConstants.ATTR_TOOL, ValgrindLaunchPlugin.TOOL_EXT_DEFAULT); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, false); - // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, false); - // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, false); - // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, false); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_FREERES, true); - - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, true); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, 12); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, true); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, false); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, 2000000); - configuration.setAttribute(LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, EMPTY_STRING); + // configuration.setAttribute(ISMLCDTLaunchConstants.ATTR_LAUNCH_MODE, + // "valgrind"); + + configuration.setAttribute(LaunchConfigurationConstants.ATTR_TOOL, + ValgrindLaunchPlugin.TOOL_EXT_DEFAULT); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_TRACECHILD, false); + // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_CHILDSILENT, + // false); + // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TRACKFDS, + // false); + // configuration.setAttribute(ValgrindLaunchPlugin.ATTR_GENERAL_TIMESTAMP, + // false); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_FREERES, true); + + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_DEMANGLE, true); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_NUMCALLERS, 12); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_ERRLIMIT, true); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_BELOWMAIN, false); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_MAXFRAME, 2000000); + configuration.setAttribute( + LaunchConfigurationConstants.ATTR_GENERAL_SUPPFILE, + EMPTY_STRING); } @Override @@ -661,14 +727,17 @@ public class ValgrindOptionsTab extends AbstractLaunchConfigurationTab { protected void updateLaunchConfigurationDialog() { if (!isInitializing) { super.updateLaunchConfigurationDialog(); - } + } } - public static void showErrorDialog(final String errorMessage, final String reasonMessage, final Exception ex) { - + + public static void showErrorDialog(final String errorMessage, + final String reasonMessage, final Exception ex) { + final String dialogTitle = "Valgrind Error"; final String toolname = Messages.getString("ValgrindOptionsTab.Tool"); - final IStatus status = new Status(IStatus.ERROR, toolname, IStatus.OK, reasonMessage, ex); - + final IStatus status = new Status(IStatus.ERROR, toolname, IStatus.OK, + reasonMessage, ex); + Display.getDefault().syncExec(new Runnable() { public void run() { ErrorDialog.openError(null, dialogTitle, errorMessage, status); diff --git a/org.eclipse.linuxtools.valgrind.massif/META-INF/MANIFEST.MF b/org.eclipse.linuxtools.valgrind.massif/META-INF/MANIFEST.MF index 297969d..67b4ddc 100644 --- a/org.eclipse.linuxtools.valgrind.massif/META-INF/MANIFEST.MF +++ b/org.eclipse.linuxtools.valgrind.massif/META-INF/MANIFEST.MF @@ -18,7 +18,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.linuxtools.valgrind.launch, org.eclipse.linuxtools.valgrind.ui, com.samsung.slp.nativeide;bundle-version="1.0.0", - com.samsung.slp.common.conn;bundle-version="1.0.0" + org.eclipse.linuxtools.valgrind.launch.exe;bundle-version="1.3.18" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin diff --git a/org.eclipse.linuxtools.valgrind.massif/src/org/eclipse/linuxtools/valgrind/massif/MassifLaunchDelegate.java b/org.eclipse.linuxtools.valgrind.massif/src/org/eclipse/linuxtools/valgrind/massif/MassifLaunchDelegate.java index e9497ff..a7fb29c 100644 --- a/org.eclipse.linuxtools.valgrind.massif/src/org/eclipse/linuxtools/valgrind/massif/MassifLaunchDelegate.java +++ b/org.eclipse.linuxtools.valgrind.massif/src/org/eclipse/linuxtools/valgrind/massif/MassifLaunchDelegate.java @@ -7,7 +7,7 @@ * * Contributors: * Elliott Baron - initial API and implementation - *******************************************************************************/ + *******************************************************************************/ package org.eclipse.linuxtools.valgrind.massif; import java.io.File; @@ -27,12 +27,13 @@ import org.eclipse.linuxtools.valgrind.launch.IValgrindLaunchDelegate; import org.eclipse.linuxtools.valgrind.launch.ValgrindLaunchPlugin; import org.eclipse.linuxtools.valgrind.ui.*; -import com.samsung.slp.common.conn.session.ISession; import com.samsung.slp.nativeide.launch.SLPLaunchDelegate; +import org.eclipse.linuxtools.valgrind.launch.CommandManager; + +public class MassifLaunchDelegate extends SLPLaunchDelegate implements + IValgrindLaunchDelegate { + // valgrind -public class MassifLaunchDelegate extends SLPLaunchDelegate implements IValgrindLaunchDelegate { - //valgrind - protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ protected static final String NO = "no"; //$NON-NLS-1$ protected static final String YES = "yes"; //$NON-NLS-1$ @@ -42,13 +43,13 @@ public class MassifLaunchDelegate extends SLPLaunchDelegate implements IValgrind protected static final String LOG_FILE = LOG_PREFIX + "%p.xml"; //$NON-NLS-1$ protected static final FileFilter LOG_FILTER = new FileFilter() { public boolean accept(File pathname) { - //return pathname.getName().startsWith(LOG_PREFIX); + // return pathname.getName().startsWith(LOG_PREFIX); return pathname.getName().endsWith("xml"); - + } }; - - protected static final String OUT_PREFIX = "massif_"; //$NON-NLS-1$ + + protected static final String OUT_PREFIX = "massif_"; //$NON-NLS-1$ //protected static final String OUT_FILE = OUT_PREFIX + "%p.txt"; //$NON-NLS-1$ protected static final String OUT_FILE = "massif_000.txt"; //$NON-NLS-1$ protected static final FileFilter MASSIF_FILTER = new FileFilter() { @@ -73,37 +74,43 @@ public class MassifLaunchDelegate extends SLPLaunchDelegate implements IValgrind protected MassifOutput output; - public void launch(ValgrindCommand command, ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor, Process remoteShellProcess,ISession session) - throws Exception { + public void launch(ValgrindCommand command, ILaunchConfiguration config, + ILaunch launch, IProgressMonitor monitor) throws Exception { MassifPlugin.getDefault().setConfig(config); MassifPlugin.getDefault().setSourceLocator(launch.getSourceLocator()); try { - //command.getProcess().waitFor(); - - remoteShellProcess.waitFor(); - - String ValgrindHostdir = ValgrindUIPlugin.getDefault().getStateLocation().append("Valgrind_XML").toOSString(); - String targetlog_massif=ValgrindLaunchPlugin.RESULT_DIR + OUT_FILE; - String hostlog_massif =ValgrindHostdir+File.separator+OUT_FILE; - //--bery sftp dowonload - session.downloadFile(targetlog_massif,hostlog_massif); - + // command.getProcess().waitFor(); + + // remoteShellProcess.waitFor(); + + String ValgrindHostdir = ValgrindUIPlugin.getDefault() + .getStateLocation().toOSString(); + String targetlog_massif = ValgrindLaunchPlugin.RESULT_DIR + + OUT_FILE; + String hostlog_massif = ValgrindHostdir + File.separator + OUT_FILE; + // --bery sftp dowonload + // session.downloadFile(targetlog_massif,hostlog_massif); + File file = new File(hostlog_massif); + if (file.exists()) { + file.delete(); + } + CommandManager.pull(targetlog_massif, hostlog_massif); parseOutput(hostlog_massif); - } catch (InterruptedException e) { } catch (IOException e) { e.printStackTrace(); - abort(Messages.getString("MassifLaunchDelegate.Error_parsing_output"), e, ICDTLaunchConfigurationConstants.ERR_INTERNAL_ERROR); //$NON-NLS-1$ + abort(Messages + .getString("MassifLaunchDelegate.Error_parsing_output"), e, ICDTLaunchConfigurationConstants.ERR_INTERNAL_ERROR); //$NON-NLS-1$ } } protected void parseOutput(String hostlog_massif) throws IOException { output = new MassifOutput(); - // for (File file : hostlog_massif) { - MassifParser parser = new MassifParser(hostlog_massif); - output.putSnapshots(parser.getPid(), parser.getSnapshots()); - //} - + // for (File file : hostlog_massif) { + MassifParser parser = new MassifParser(hostlog_massif); + output.putSnapshots(parser.getPid(), parser.getSnapshots()); + // } + ValgrindViewPart view = ValgrindUIPlugin.getDefault().getView(); IValgrindToolView massifPart = view.getDynamicView(); if (massifPart instanceof MassifViewPart) { @@ -113,49 +120,75 @@ public class MassifLaunchDelegate extends SLPLaunchDelegate implements IValgrind } } - public String[] getCommandArray(ValgrindCommand command, ILaunchConfiguration config) - throws CoreException { + public String[] getCommandArray(ValgrindCommand command, + ILaunchConfiguration config) throws CoreException { ArrayList opts = new ArrayList(); - opts.add(OPT_MASSIF_OUTFILE + EQUALS + ValgrindLaunchPlugin.RESULT_DIR + OUT_FILE); - - opts.add(OPT_HEAP + EQUALS + (config.getAttribute(MassifToolPage.ATTR_MASSIF_HEAP, true) ? YES : NO)); - opts.add(OPT_HEAPADMIN + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_HEAPADMIN, 8)); - opts.add(OPT_STACKS + EQUALS + (config.getAttribute(MassifToolPage.ATTR_MASSIF_STACKS, false) ? YES : NO)); - opts.add(OPT_DEPTH + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_DEPTH, 30)); - List allocFns = config.getAttribute(MassifToolPage.ATTR_MASSIF_ALLOCFN, Collections.EMPTY_LIST); + opts.add(OPT_MASSIF_OUTFILE + EQUALS + ValgrindLaunchPlugin.RESULT_DIR + + OUT_FILE); + + opts.add(OPT_HEAP + + EQUALS + + (config.getAttribute(MassifToolPage.ATTR_MASSIF_HEAP, true) ? YES + : NO)); + opts.add(OPT_HEAPADMIN + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_HEAPADMIN, 8)); + opts.add(OPT_STACKS + + EQUALS + + (config + .getAttribute(MassifToolPage.ATTR_MASSIF_STACKS, false) ? YES + : NO)); + opts.add(OPT_DEPTH + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_DEPTH, 30)); + List allocFns = config.getAttribute( + MassifToolPage.ATTR_MASSIF_ALLOCFN, Collections.EMPTY_LIST); for (String func : allocFns) { opts.add(OPT_ALLOCFN + EQUALS + func); } - opts.add(OPT_THRESHOLD + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_THRESHOLD, 10) / 10.0); - opts.add(OPT_PEAKINACCURACY + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_PEAKINACCURACY, 10) / 10.0); - opts.add(OPT_TIMEUNIT + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_TIMEUNIT, MassifToolPage.TIME_I)); - opts.add(OPT_DETAILEDFREQ + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_DETAILEDFREQ, 10)); - opts.add(OPT_MAXSNAPSHOTS + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_MAXSNAPSHOTS, 100)); - opts.add(OPT_ALIGNMENT + EQUALS + config.getAttribute(MassifToolPage.ATTR_MASSIF_ALIGNMENT, 8)); + opts.add(OPT_THRESHOLD + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_THRESHOLD, 10) + / 10.0); + opts.add(OPT_PEAKINACCURACY + + EQUALS + + config.getAttribute( + MassifToolPage.ATTR_MASSIF_PEAKINACCURACY, 10) / 10.0); + opts.add(OPT_TIMEUNIT + + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_TIMEUNIT, + MassifToolPage.TIME_I)); + opts.add(OPT_DETAILEDFREQ + + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_DETAILEDFREQ, + 10)); + opts.add(OPT_MAXSNAPSHOTS + + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_MAXSNAPSHOTS, + 100)); + opts.add(OPT_ALIGNMENT + EQUALS + + config.getAttribute(MassifToolPage.ATTR_MASSIF_ALIGNMENT, 8)); return opts.toArray(new String[opts.size()]); } -// public void restoreState(HistoryEntry entry) throws CoreException { -// try { -// Map config = entry.getAttributes(); -// MassifPlugin.getDefault().setConfig(config); -// -// // retrieve or create sourceLocator -// ILaunch launch = new Launch(config, ILaunchManager.PROFILE_MODE, null); -// setDefaultSourceLocator(launch, config); -// MassifPlugin.getDefault().setSourceLocator(launch.getSourceLocator()); -// -// File[] massifOutputs = entry.getDatadir().listFiles(MASSIF_FILTER); -// parseOutput(massifOutputs); -// } catch (IOException e) { -// e.printStackTrace(); -// abort(Messages.getString("MassifLaunchDelegate.Error_parsing_output"), e, ICDTLaunchConfigurationConstants.ERR_INTERNAL_ERROR); //$NON-NLS-1$ -// } -// } -// -// public void saveState(HistoryEntry entry) throws CoreException { -// } + // public void restoreState(HistoryEntry entry) throws CoreException { + // try { + // Map config = entry.getAttributes(); + // MassifPlugin.getDefault().setConfig(config); + // + // // retrieve or create sourceLocator + // ILaunch launch = new Launch(config, ILaunchManager.PROFILE_MODE, null); + // setDefaultSourceLocator(launch, config); + // MassifPlugin.getDefault().setSourceLocator(launch.getSourceLocator()); + // + // File[] massifOutputs = entry.getDatadir().listFiles(MASSIF_FILTER); + // parseOutput(massifOutputs); + // } catch (IOException e) { + // e.printStackTrace(); + // abort(Messages.getString("MassifLaunchDelegate.Error_parsing_output"), e, ICDTLaunchConfigurationConstants.ERR_INTERNAL_ERROR); //$NON-NLS-1$ + // } + // } + // + // public void saveState(HistoryEntry entry) throws CoreException { + // } } diff --git a/org.eclipse.linuxtools.valgrind.memcheck/META-INF/MANIFEST.MF b/org.eclipse.linuxtools.valgrind.memcheck/META-INF/MANIFEST.MF index 23aca82..d36c6a6 100644 --- a/org.eclipse.linuxtools.valgrind.memcheck/META-INF/MANIFEST.MF +++ b/org.eclipse.linuxtools.valgrind.memcheck/META-INF/MANIFEST.MF @@ -18,8 +18,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.linuxtools.valgrind.launch, org.eclipse.linuxtools.valgrind.ui, com.samsung.slp.nativeide;bundle-version="1.0.0", - com.samsung.slp.common.conn;bundle-version="1.0.0", - com.samsung.slp.common;bundle-version="1.3.20" + com.samsung.slp.common;bundle-version="1.3.20", + org.eclipse.linuxtools.valgrind.launch.exe;bundle-version="1.3.18" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ActivationPolicy: lazy Bundle-Localization: plugin diff --git a/org.eclipse.linuxtools.valgrind.memcheck/src/org/eclipse/linuxtools/valgrind/memcheck/MemcheckLaunchDelegate.java b/org.eclipse.linuxtools.valgrind.memcheck/src/org/eclipse/linuxtools/valgrind/memcheck/MemcheckLaunchDelegate.java index a0dcc5d..1b54c74 100644 --- a/org.eclipse.linuxtools.valgrind.memcheck/src/org/eclipse/linuxtools/valgrind/memcheck/MemcheckLaunchDelegate.java +++ b/org.eclipse.linuxtools.valgrind.memcheck/src/org/eclipse/linuxtools/valgrind/memcheck/MemcheckLaunchDelegate.java @@ -20,10 +20,10 @@ import javax.xml.parsers.ParserConfigurationException; import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Platform; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.linuxtools.valgrind.core.ValgrindCommand; +import org.eclipse.linuxtools.valgrind.launch.CommandManager; import org.eclipse.linuxtools.valgrind.launch.IValgrindLaunchDelegate; import org.eclipse.linuxtools.valgrind.launch.ValgrindLaunchPlugin; import org.eclipse.linuxtools.valgrind.ui.IValgrindToolView; @@ -31,10 +31,6 @@ import org.eclipse.linuxtools.valgrind.ui.ValgrindUIPlugin; import org.eclipse.linuxtools.valgrind.ui.ValgrindViewPart; import org.xml.sax.SAXException; -import com.samsung.slp.common.conn.device.DeviceManager; -import com.samsung.slp.common.conn.machine.IMachine; -import com.samsung.slp.common.conn.session.ISession; -import com.samsung.slp.common.util.DialogUtil; import com.samsung.slp.nativeide.launch.SLPLaunchDelegate; public class MemcheckLaunchDelegate extends SLPLaunchDelegate implements IValgrindLaunchDelegate { @@ -56,31 +52,22 @@ public class MemcheckLaunchDelegate extends SLPLaunchDelegate implements IValgri protected ValgrindError error; @Override - public void launch(ValgrindCommand command, ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor,Process remoteShellProcess, ISession session) throws Exception { + public void launch(ValgrindCommand command, ILaunchConfiguration config, ILaunch launch, IProgressMonitor monitor) throws Exception { // wait for Valgrind to exit try { - //command.getProcess().waitFor(); - if( remoteShellProcess.waitFor() != 0) { - DialogUtil.openErrorDialog("Application is terminated forcefully. Profiling cannot complete."); - return; - } - if (DeviceManager.getSelectedDevice().getMachineType() - .equals(IMachine.VIRTUAL_DEVICE) - && Platform.getOS().equals(Platform.OS_WIN32)) { - Exception te; - te = new Exception( - "Can not use valgrind, because the host doesn't support Intel VT"); - throw (te); - } - String ValgrindHostdir = ValgrindUIPlugin.getDefault().getStateLocation().append("Valgrind_XML").toOSString(); + //String ValgrindHostdir = ValgrindUIPlugin.getDefault().getStateLocation().append("Valgrind_XML").toOSString(); + String ValgrindHostdir = ValgrindUIPlugin.getDefault().getStateLocation().toOSString(); String targetlog=ValgrindLaunchPlugin.RESULT_DIR +"valgrind.xml"; - String hostlog =ValgrindHostdir + File.separator + "valgrind_out.xml"; + String hostlog =ValgrindHostdir + /*File.separator +*/ "valgrind_out.xml"; //--bery sftp dowonload - session.downloadFile(targetlog,hostlog); + File file = new File(hostlog); + if(file.exists()){ + file.delete(); + } + CommandManager.pull(targetlog, hostlog); //----bery parsing the xml output file - parseOutput(hostlog); - + parseOutput(hostlog); } catch (ParserConfigurationException e) { abort(Messages.getString("MemcheckLaunchDelegate.Error_parsing_output"), e, ICDTLaunchConfigurationConstants.ERR_INTERNAL_ERROR); //$NON-NLS-1$ e.printStackTrace(); @@ -89,7 +76,7 @@ public class MemcheckLaunchDelegate extends SLPLaunchDelegate implements IValgri e.printStackTrace(); } catch (SAXException e) { Exception te; - if(DeviceManager.getSelectedDevice().getMachineType().equals(IMachine.REAL_DEVICE)) + if(!CommandManager.isEmulator()) { te = new Exception("Currently valgrind profiling is not supported in 'Real Device'. Please use valgrind profiling in 'Emulator'."); throw(te); @@ -99,7 +86,6 @@ public class MemcheckLaunchDelegate extends SLPLaunchDelegate implements IValgri abort(Messages.getString("MemcheckLaunchDelegate.Error_parsing_output"), te, ICDTLaunchConfigurationConstants.ERR_INTERNAL_ERROR); //$NON-NLS-1$ e.printStackTrace(); - } catch (InterruptedException e) { } } -- 2.7.4