DEBUG: COREDUMP: Supported a different .cs format (package information)
authordonghyuk.yang <donghyuk.yang@samsung.com>
Mon, 20 Jan 2014 02:15:05 +0000 (11:15 +0900)
committerdonghyuk.yang <donghyuk.yang@samsung.com>
Mon, 20 Jan 2014 02:15:05 +0000 (11:15 +0900)
In .cs file, package information format of system package is different
from application package.

==============================================
279 Package Information
280 Package Name: org.tizen.ontv-setting-tv
281 Package ID : org.tizen.ontv-setting-tv
282 Version: 0.1
283 Package Type: rpm
284 App Name: ontv-setting-tv
285 App ID: org.tizen.ontv-setting-tv
286 Type: Application
287 Categories: (NULL)
==============================================

==============================================
254 Package Information
255 Name        : tvs-main-loop
256 Version     : 0.0.2
257 Release     : 29.1
258 Architecture: i586
259 Install Date: Wed Jan  8 12:41:53 2014
260 Group       : Unspecified
261 Size        : 23124
.....
==============================================

Change-Id: Id66aeb169f295e3d26f06b07ac6a9e88706fc2c7
Signed-off-by: donghyuk.yang <donghyuk.yang@samsung.com>
org.tizen.nativeplatform/src/org/tizen/nativeplatform/coredump/CSFileReader.java
org.tizen.nativeplatform/src/org/tizen/nativeplatform/launch/wizard/pages/PlatformLaunchSettingCorePage.java

index 5c6ec40..62f5d6d 100755 (executable)
@@ -36,766 +36,789 @@ import org.tizen.nativeplatform.coredump.model.RegisterVO;
 
 public class CSFileReader {
 
-       private File csFile;
-
-       public CSFileReader(String csFilePath) {
-               csFile = new File(csFilePath);
-       }
-
-       public void demanglingFile() {
-
-               try {
-                       String sdkRoot = InstallPathConfig.getSDKPath();
-
-                       if (sdkRoot != null && !sdkRoot.isEmpty()) {
-
-                               StringBuffer sb = new StringBuffer();
-                               StringBuffer sbFile = new StringBuffer();
-
-                               // 1. If windows, making cat.exe File object.
-                               if (isWindows()) {
-                                       sb.append("tools");//$NON-NLS-1$
-                                       sb.append(File.separator);
-                                       sb.append("mingw");//$NON-NLS-1$
-                                       sb.append(File.separator);
-                                       sb.append("msys");//$NON-NLS-1$
-                                       sb.append(File.separator);
-                                       sb.append("1.0");//$NON-NLS-1$
-                                       sb.append(File.separator);
-                                       sb.append("bin");//$NON-NLS-1$
-                                       sb.append(File.separator);
-                                       sb.append("cat.exe");
-                                       sb.append(" ");//$NON-NLS-1$
-                               } else if (isLinux() || isMacOS()) {
-                                       sb.append("cat ");//$NON-NLS-1$
-                               } else {
-                                       return;
-                               }
-
-                               // $INPUT_FILE
-                               sbFile.append("\"");//$NON-NLS-1$
-                               sbFile.append(csFile.getCanonicalFile().getCanonicalPath());
-                               sbFile.append("\"");//$NON-NLS-1$
-                               String strInputFile = sbFile.toString();
-
-                               sb.append(strInputFile);
-                               String strCommandCat = sb.toString();
-
-                               // 2. Making i386-linux-gnueabi-c++filt File object.
-                               sb.delete(0, sb.length());
-                               sb.append("tools");//$NON-NLS-1$
-                               sb.append(File.separator);
-                               sb.append("i386-linux-gnueabi-gcc-4.5");//$NON-NLS-1$
-                               sb.append(File.separator);
-                               sb.append("bin");//$NON-NLS-1$
-                               sb.append(File.separator);
-                               if (isWindows()) {
-                                       sb.append("i386-linux-gnueabi-c++filt.exe");//$NON-NLS-1$
-                               } else if (isLinux() || isMacOS()) {
-                                       sb.append("i386-linux-gnueabi-c++filt");//$NON-NLS-1$
-                               } else {
-                                       return;
-                               }
-                               sb.append(" > ");//$NON-NLS-1$
-
-                               // $OUTPUT_FILE
-                               sbFile.delete(0, sbFile.length());
-                               sbFile.append("\"");//$NON-NLS-1$
-                               sbFile.append(csFile.getParentFile().getCanonicalPath());
-                               sbFile.append(File.separator);
-                               sbFile.append("copy_");//$NON-NLS-1$
-                               sbFile.append(csFile.getName());
-                               sbFile.append("\"");//$NON-NLS-1$
-                               String strOutputFile = sbFile.toString();
-
-                               sb.append(strOutputFile);
-                               String strCommandFilt = sb.toString();
-
-                               // 3. Making complete command.
-                               sb.delete(0, sb.length());
-                               sb.append(strCommandCat);
-                               sb.append(" | ");//$NON-NLS-1$
-                               sb.append(strCommandFilt);
-
-                               // 4. Run command.
-                               ProcessBuilder processBuilder = new ProcessBuilder();
-                               processBuilder.command(getCommand(sb.toString()));
-                               processBuilder.directory(new File(sdkRoot));
-                               Process process = processBuilder.start();
-                               if (process.waitFor() == 0)
-                                       process.destroy();
-
-                               // Final. Change file
-                               strInputFile = strInputFile.substring(1, strInputFile.length() - 1);
-                               File fileInput = new File(strInputFile);
-                               fileInput.setWritable(true);
-                               fileInput.delete();
-
-                               strOutputFile = strOutputFile.substring(1, strOutputFile.length() - 1);
-                               File fileOutput = new File(strOutputFile);
-                               fileOutput.setWritable(true);
-                               fileOutput.renameTo(new File(strInputFile));
-                       }
-               } catch (IOException e) {
-                       e.printStackTrace();
-               } catch (InterruptedException e) {
-                       e.printStackTrace();
-               }
-       }
-
-       private String[] getCommand(String strCmd) {
-               if (isWindows()) {
-                       return new String[] { "cmd", "/c", strCmd }; //$NON-NLS-1$
-               } else if (isLinux() || isMacOS()) {
-                       return new String[] { "/bin/sh", "-c", strCmd }; //$NON-NLS-1$
-               }
-               return null;
-       }
-
-       private static final int MODE_DEFAULT = 0;
-
-       private static final int MODE_HEADER = 1;
-       private static final int MODE_HEADER_CRASH = 2;
-       private static final int MODE_HEADER_SIGNAL = 3;
-       private static final int MODE_HEADER_REGISTER_INFO = 4;
-       private static final int MODE_HEADER_MEMORY = 5;
-       private static final int MODE_HEADER_PACKAGE = 6;
-
-       private static final int MODE_CALL_STACK_INFO = 12;
-       private static final int MODE_MEMORY_MAP = 13;
-       private static final int MODE_DEBUG_MESSAGE = 14;
-
-       private String strSignalNumber = null;
-       private int mode = MODE_DEFAULT;
-
-       public CSVO parse() {
-               CSVO result = null;
-
-               if (csFile != null) {
-                       String strLine = null;
-                       FileReader fr = null;
-                       BufferedReader br = null;
-
-                       mode = MODE_DEFAULT;
-                       result = new CSVO();
-
-                       try {
-                               fr = new FileReader(csFile);
-                               br = new BufferedReader(fr);
-
-                               while ((strLine = br.readLine()) != null) {
-
-                                       strLine = strLine.trim();
-
-                                       switch (mode) {
-                                       case MODE_DEFAULT:
-                                               if (strLine.equals("S/W Version Information"))//$NON-NLS-1$
-                                                       mode = MODE_HEADER;
-                                               else if (strLine.equals("Crash Information"))//$NON-NLS-1$
-                                                       mode = MODE_HEADER_CRASH;
-                                               else if (strLine.equals("Package Information"))//$NON-NLS-1$
-                                                       mode = MODE_HEADER_PACKAGE;
-                                               else if (strLine.startsWith("Register Information"))//$NON-NLS-1$
-                                                       mode = MODE_HEADER_REGISTER_INFO;
-                                               else if (strLine.startsWith("Memory Information"))//$NON-NLS-1$
-                                                       mode = MODE_HEADER_MEMORY;
-                                               else if (strLine.startsWith("Callstack Information"))//$NON-NLS-1$
-                                                       mode = MODE_CALL_STACK_INFO;
-                                               else if (strLine.startsWith("Maps Information"))//$NON-NLS-1$
-                                                       mode = MODE_MEMORY_MAP;
-                                               else if (strLine.startsWith("Latest Debug Message Information"))//$NON-NLS-1$
-                                                       mode = MODE_DEBUG_MESSAGE;
-                                               break;
-
-                                       case MODE_HEADER:
-                                               if (parseHeader(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_HEADER_CRASH:
-                                               if (parseHeaderCrash(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_HEADER_SIGNAL:
-                                               if (parseHeaderSignal(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_HEADER_REGISTER_INFO:
-                                               if (parseHeaderRegisterInfo(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_HEADER_PACKAGE:
-                                               if (parseHeaderPackage(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_HEADER_MEMORY:
-                                               if (parseHeaderMemory(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_CALL_STACK_INFO:
-                                               if (parseCallStackInfo(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_MEMORY_MAP:
-                                               if (parseMemoryMap(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-
-                                       case MODE_DEBUG_MESSAGE:
-                                               if (parseDebugMessage(result, strLine))
-                                                       mode = MODE_DEFAULT;
-                                               break;
-                                       }
-                               }
-                       } catch (FileNotFoundException e) {
-                               e.printStackTrace();
-                       } catch (IOException e) {
-                               e.printStackTrace();
-                       } catch (Exception e) {
-                               e.printStackTrace();
-                       } finally {
-                               try {
-                                       if (fr != null)
-                                               fr.close();
-                                       if (br != null)
-                                               br.close();
-                               } catch (IOException e) {
-                                       e.printStackTrace();
-                               }
-                       }
-               }
-
-               return result;
-       }
-
-       /**
-        * @param result
-        * @param strLine
-        * @return
-        */
-       /**
-        * @param result
-        * @param strLine
-        * @return
-        */
-       private boolean parseHeader(CSVO result, String strLine) throws Exception {
-
-               boolean isEnd = false;
-
-               int idxSub = -1;
-               String strSub = null;
-
-               if (strLine.isEmpty()) {
-                       isEnd = true;
-               } else {
-                       HeaderVO header = result.getHeader();
-
-                       if (strLine.startsWith("Build-Number:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length());
-                                       header.setBuildNumber(strSub);
-                               }
-                       } else if (strLine.startsWith("Build-Date:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length());
-                                       header.setBuildDate(strSub);
-                               }
-                       } else if (strLine.startsWith("Model:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length());
-                                       header.setModel(strSub);
-                               }
-                       } else if (strLine.startsWith("Tizen-Version:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length());
-                                       header.setVersion(strSub);
-                               }
-                       }
-                       result.setHeader(header);
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseHeaderCrash(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               int idxSub = -1;
-               String strSub = null;
-
-               if (strLine.isEmpty()) {
-                       isEnd = true;
-               } else {
-                       HeaderVO header = result.getHeader();
-
-                       if (strLine.startsWith("Date:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setCrashDate(strSub);
-                               }
-                       } else if (strLine.startsWith("Executable File Path:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setCrashExePath(strSub);
-                               }
-                       } else if (strLine.startsWith("Process Name:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setProcessName(strSub);
-                               }
-                       } else if (strLine.startsWith("PID:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setPID(strSub);
-                               }
-                       } else if (strLine.startsWith("Signal:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.appendSignalLine(strSub);
-                                       mode = MODE_HEADER_SIGNAL;
-                               }
-                       }
-                       result.setHeader(header);
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseHeaderSignal(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               if (strLine.isEmpty()) {
-                       isEnd = true;
-               } else {
-                       HeaderVO header = result.getHeader();
-
-                       if (strSignalNumber != null && !strSignalNumber.isEmpty()) {
-                               header.appendSignalLine(strSignalNumber);
-                               strSignalNumber = null;
-                       }
-
-                       header.appendSignalLine(strLine);
-                       result.setHeader(header);
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseHeaderPackage(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               int idxSub = -1;
-               String strSub = null;
-
-               if (strLine.isEmpty()) {
-                       isEnd = true;
-               } else {
-                       HeaderVO header = result.getHeader();
-
-                       if (strLine.startsWith("Package Name:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setPackageName(strSub);
-                               }
-                       } else if (strLine.startsWith("Package Type:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setPackageType(strSub);
-                               }
-                       } else if (strLine.startsWith("Version:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setPackageVersion(strSub);
-                               }
-                       } else if (strLine.startsWith("App Name:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setAppName(strSub);
-                               }
-                       } else if (strLine.startsWith("App ID")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setAppID(strSub);
-                               }
-                       } else if (strLine.startsWith("Type:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setAppType(strSub);
-                               }
-                       } else if (strLine.startsWith("Categories:")) {//$NON-NLS-1$
-                               idxSub = strLine.indexOf(':');
-                               if (idxSub > -1) {
-                                       strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
-                                       header.setCategories(strSub);
-                               }
-                       }
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseHeaderRegisterInfo(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               if (strLine.isEmpty()) {
-                       isEnd = true;
-               } else {
-                       HeaderVO header = result.getHeader();
-
-                       ArrayList<RegisterVO> registerList = header.getRegisterList();
-                       String[] strsLine = strLine.split(",");//$NON-NLS-1$
-                       for (String str : strsLine) {
-                               int idxSub = str.indexOf('=');//$NON-NLS-1$
-                               if (idxSub > -1) {
-                                       RegisterVO registerVO = new RegisterVO(str.substring(0, idxSub).trim(), str.substring(idxSub + 1,
-                                                       str.length()).trim());
-                                       registerList.add(registerVO);
-                               }
-                       }
-
-                       header.setRegisters(registerList);
-                       result.setHeader(header);
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseHeaderMemory(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               if (strLine.isEmpty()) {
-                       isEnd = true;
-               } else {
-                       HeaderVO header = result.getHeader();
-
-                       int idxSub = -1;
-                       String strSub = null;
-
-                       idxSub = strLine.indexOf(":");//$NON-NLS-1$
-                       if (idxSub > -1) {
-                               strSub = strLine.substring(0, idxSub).trim();
-                               if (strSub.equals("MemTotal")) {//$NON-NLS-1$
-                                       header.setMemTotal(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("MemFree")) {//$NON-NLS-1$
-                                       header.setMemFree(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("Buffers")) {//$NON-NLS-1$
-                                       header.setBuffers(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("Cached")) {//$NON-NLS-1$
-                                       header.setCached(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmPeak")) {//$NON-NLS-1$
-                                       header.setVmPeak(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmSize")) {//$NON-NLS-1$
-                                       header.setVmSize(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmLck")) {//$NON-NLS-1$
-                                       header.setVmLck(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmPin")) {//$NON-NLS-1$
-                                       header.setVmPin(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmHWM")) {//$NON-NLS-1$
-                                       header.setVmHWM(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmRSS")) {//$NON-NLS-1$
-                                       header.setVmRSS(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmData")) {//$NON-NLS-1$
-                                       header.setVmData(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmStk")) {//$NON-NLS-1$
-                                       header.setVmStk(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmExe")) {//$NON-NLS-1$
-                                       header.setVmExe(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmLib")) {//$NON-NLS-1$
-                                       header.setVmLib(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmPTE")) {//$NON-NLS-1$
-                                       header.setVmPTE(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               } else if (strSub.equals("VmSwap")) {//$NON-NLS-1$
-                                       header.setVmSwap(Integer.parseInt(strLine.substring(idxSub + 1, strLine.length())
-                                                       .replace(" KB", "").trim()));//$NON-NLS-1$
-                               }
-                       }
-
-                       result.setHeader(header);
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseCallStackInfo(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               if (strLine.equals("End of Call Stack")) {//$NON-NLS-1$
-                       isEnd = true;
-               } else if (strLine.startsWith("Call Stack Count:")) {//$NON-NLS-1$
-                       // Ignore
-               } else {
-                       ArrayList<CallStackVO> csList = result.getCallStackList();
-
-                       int idxSub = -1;
-                       int idxL = -1, idxR = -1;
-                       int countP = 0;
-
-                       CallStackVO csVO = new CallStackVO();
-
-                       idxSub = strLine.indexOf(":");
-                       if (idxSub > -1)
-                               csVO.setSerialNumber(Integer.parseInt(strLine.substring(0, idxSub).trim()));
-
-                       // emluator vs. target
-                       boolean isAbnormalAddressFormat = false;
-                       String strAddressTemp = null;
-                       long addressTemp = 0l;
-                       idxL = strLine.indexOf('[');
-                       idxR = strLine.indexOf(']');
-                       if (idxL > -1 && idxR > -1) {
-                               strAddressTemp = strLine.substring(idxL + 1, idxR).trim();
-                               if (strAddressTemp != null) {
-                                       try {
-                                               if (strAddressTemp.startsWith("0x"))//$NON-NLS-1$
-                                                       strAddressTemp = strAddressTemp.substring(2, strAddressTemp.length());
-                                               addressTemp = Long.parseLong(strAddressTemp, 16);
-                                       } catch (NumberFormatException e) {
-                                               isAbnormalAddressFormat = true;
-                                       }
-                               }
-                       }
-
-                       if (isAbnormalAddressFormat) {
-                               // Target
-
-                               idxL = 0;
-                               idxR = 0;
-                               countP = countParentheses(strLine);
-                               if (countP > 0) {
-                                       for (int i = 0; i < countP; i++) {
-                                               idxL = strLine.indexOf("(", idxL);//$NON-NLS-1$
-                                               if (idxL > -1) {
-                                                       idxR = strLine.indexOf(")", idxL);//$NON-NLS-1$
-                                                       if (idxR > -1) {
-                                                               if (idxL + 3 < idxR) {
-                                                                       long longTemp = getAddress(strLine.substring(idxL + 1, idxR).trim());
-                                                                       if (longTemp != 0) {
-                                                                               csVO.setAddressS(strLine.substring(idxL + 1, idxR).trim());
-                                                                               csVO.setAddressL(longTemp);
-                                                                               csVO.setPayload(strLine);
-
-                                                                               csList.add(csVO);
-                                                                               result.setCallStackList(csList);
-                                                                               break;
-                                                                       } else {
-                                                                               idxL = idxR;
-                                                                       }
-                                                               } else {
-                                                                       idxL = idxR;
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               }
-                       } else {
-                               // Emulator
-                               csVO.setAddressS(strAddressTemp);
-                               csVO.setAddressL(addressTemp);
-
-                               if (idxSub > 0 && idxL > 0)
-                                       csVO.setPayload(strLine.substring(idxSub, idxL).trim());
-                               csList.add(csVO);
-                               result.setCallStackList(csList);
-                       }
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseMemoryMap(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               if (strLine.equals("End of Maps Information")) {//$NON-NLS-1$
-                       isEnd = true;
-               } else if (!strLine.isEmpty()) {
-                       ArrayList<MemoryMapVO> memoryMapList = result.getMemoryMapList();
-
-                       int idxStart = 0, idxEnd = -1;
-                       String strSub = null;
-                       MemoryMapVO memoryMapVO = new MemoryMapVO();
-
-                       idxEnd = strLine.indexOf(" ");//$NON-NLS-1$
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(idxStart, idxEnd).trim();
-                               memoryMapVO.setStartAddressS(strSub);
-                               memoryMapVO.setStartAddressL(Long.parseLong(strSub, 16));
-                       }
-                       idxStart = idxEnd + 1;
-                       idxEnd = strLine.indexOf(" ", idxStart);//$NON-NLS-1$
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(idxStart, idxEnd).trim();
-                               memoryMapVO.setEndAddressS(strSub);
-                               memoryMapVO.setEndAddressL(Long.parseLong(strSub, 16));
-                       }
-                       idxStart = idxEnd + 1;
-                       idxEnd = strLine.indexOf(" ", idxStart);//$NON-NLS-1$
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(idxStart, idxEnd).trim();
-                               memoryMapVO.setMod(strSub);
-                       }
-                       idxStart = idxEnd + 1;
-                       idxEnd = strLine.length();
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(idxStart, idxEnd).trim();
-                               memoryMapVO.setSoInfo(strSub);
-                       }
-
-                       memoryMapList.add(memoryMapVO);
-                       result.setMemoryMapList(memoryMapList);
-               }
-
-               return isEnd;
-       }
-
-       private boolean parseDebugMessage(CSVO result, String strLine) throws Exception {
-               boolean isEnd = false;
-
-               if (strLine.startsWith("end of latest dmf")) {//$NON-NLS-1$
-                       isEnd = true;
-               } else {
-                       boolean isAbnormalLine = false;
-                       ArrayList<DebugMessageVO> debugMessageList = result.getDebugMessageList();
-
-                       int idxStart = -1, idxEnd = -1;
-                       String strSub = null;
-                       DebugMessageVO debugMessageVO = new DebugMessageVO();
-
-                       idxEnd = strLine.indexOf(" ");//$NON-NLS-1$
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(0, idxEnd);
-                               idxStart = idxEnd + 1;
-                               idxEnd = strLine.indexOf(" ", idxStart);//$NON-NLS-1$
-                               if (idxEnd > -1) {
-                                       strSub = strLine.substring(0, idxEnd).trim();
-                                       debugMessageVO.setDate(strSub);
-                               } else {
-                                       isAbnormalLine = true;
-                               }
-                       }
-                       idxStart = idxEnd + 1;
-                       idxEnd = strLine.indexOf("(", idxStart);//$NON-NLS-1$
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(idxStart, idxEnd).trim();
-                               debugMessageVO.setTag(strSub);
-                       } else {
-                               isAbnormalLine = true;
-                       }
-                       idxStart = idxEnd + 1;
-                       idxEnd = strLine.indexOf(")", idxStart);//$NON-NLS-1$
-                       if (idxEnd > -1) {
-                               strSub = strLine.substring(idxStart, idxEnd).trim();
-                               debugMessageVO.setPID(strSub);
-                       } else {
-                               isAbnormalLine = true;
-                       }
-                       idxStart = strLine.indexOf(":", idxEnd);//$NON-NLS-1$
-                       if (idxStart > -1) {
-                               strSub = strLine.substring(idxStart + 1, strLine.length()).trim();
-                               debugMessageVO.setMessage(strSub);
-                       } else {
-                               isAbnormalLine = true;
-                       }
-
-                       if (!isAbnormalLine)
-                               debugMessageList.add(debugMessageVO);
-                       result.setDebugMessageList(debugMessageList);
-               }
-
-               return isEnd;
-       }
-
-       private int countParentheses(String strLine) {
-               int result = 0;
-               int i, len = 0;
-               boolean isLeft = false;
-
-               if (strLine != null)
-                       len = strLine.length();
-
-               for (i = 0; i < len; i++) {
-                       if (strLine.charAt(i) == '(')
-                               isLeft = true;
-
-                       if (isLeft && strLine.charAt(i) == ')') {
-                               result++;
-                               isLeft = false;
-                       }
-               }
-
-               return result;
-       }
-
-       private long getAddress(String strLine) {
-               long result = 0;
-
-               if (strLine != null && strLine.startsWith("0x")) {//$NON-NLS-1$
-                       strLine = strLine.substring(3, strLine.length()).trim();
-                       result = Long.parseLong(strLine, 16);
-               }
-
-               return result;
-       }
-
-       /*
-        * From OSChecker.java
-        */
-       public String PROPERTY_OS_NAME = (System.getProperty("os.name") != null) //$NON-NLS-1$
-       ? System.getProperty("os.name").toLowerCase() : ""; //$NON-NLS-1$
-
-       public boolean isWindows() {
-               if (PROPERTY_OS_NAME.contains("windows")) { //$NON-NLS-1$
-                       return true;
-               }
-               return false;
-       }
-
-       public boolean isLinux() {
-               if (PROPERTY_OS_NAME.contains("linux")) { //$NON-NLS-1$
-                       return true;
-               }
-               return false;
-       }
-
-       public boolean isMacOS() {
-               if (PROPERTY_OS_NAME.contains("mac")) { //$NON-NLS-1$
-                       return true;
-               }
-               return false;
-       }
+    private File csFile;
+
+    public CSFileReader(String csFilePath) {
+        csFile = new File(csFilePath);
+    }
+
+    public void demanglingFile() {
+
+        try {
+            String sdkRoot = InstallPathConfig.getSDKPath();
+
+            if (sdkRoot != null && !sdkRoot.isEmpty()) {
+
+                StringBuffer sb = new StringBuffer();
+                StringBuffer sbFile = new StringBuffer();
+
+                // 1. If windows, making cat.exe File object.
+                if (isWindows()) {
+                    sb.append("tools");//$NON-NLS-1$
+                    sb.append(File.separator);
+                    sb.append("mingw");//$NON-NLS-1$
+                    sb.append(File.separator);
+                    sb.append("msys");//$NON-NLS-1$
+                    sb.append(File.separator);
+                    sb.append("1.0");//$NON-NLS-1$
+                    sb.append(File.separator);
+                    sb.append("bin");//$NON-NLS-1$
+                    sb.append(File.separator);
+                    sb.append("cat.exe");
+                    sb.append(" ");//$NON-NLS-1$
+                } else if (isLinux() || isMacOS()) {
+                    sb.append("cat ");//$NON-NLS-1$
+                } else {
+                    return;
+                }
+
+                // $INPUT_FILE
+                sbFile.append("\"");//$NON-NLS-1$
+                sbFile.append(csFile.getCanonicalFile().getCanonicalPath());
+                sbFile.append("\"");//$NON-NLS-1$
+                String strInputFile = sbFile.toString();
+
+                sb.append(strInputFile);
+                String strCommandCat = sb.toString();
+
+                // 2. Making i386-linux-gnueabi-c++filt File object.
+                sb.delete(0, sb.length());
+                sb.append("tools");//$NON-NLS-1$
+                sb.append(File.separator);
+                sb.append("i386-linux-gnueabi-gcc-4.5");//$NON-NLS-1$
+                sb.append(File.separator);
+                sb.append("bin");//$NON-NLS-1$
+                sb.append(File.separator);
+                if (isWindows()) {
+                    sb.append("i386-linux-gnueabi-c++filt.exe");//$NON-NLS-1$
+                } else if (isLinux() || isMacOS()) {
+                    sb.append("i386-linux-gnueabi-c++filt");//$NON-NLS-1$
+                } else {
+                    return;
+                }
+                sb.append(" > ");//$NON-NLS-1$
+
+                // $OUTPUT_FILE
+                sbFile.delete(0, sbFile.length());
+                sbFile.append("\"");//$NON-NLS-1$
+                sbFile.append(csFile.getParentFile().getCanonicalPath());
+                sbFile.append(File.separator);
+                sbFile.append("copy_");//$NON-NLS-1$
+                sbFile.append(csFile.getName());
+                sbFile.append("\"");//$NON-NLS-1$
+                String strOutputFile = sbFile.toString();
+
+                sb.append(strOutputFile);
+                String strCommandFilt = sb.toString();
+
+                // 3. Making complete command.
+                sb.delete(0, sb.length());
+                sb.append(strCommandCat);
+                sb.append(" | ");//$NON-NLS-1$
+                sb.append(strCommandFilt);
+
+                // 4. Run command.
+                ProcessBuilder processBuilder = new ProcessBuilder();
+                processBuilder.command(getCommand(sb.toString()));
+                processBuilder.directory(new File(sdkRoot));
+                Process process = processBuilder.start();
+                if (process.waitFor() == 0)
+                    process.destroy();
+
+                // Final. Change file
+                strInputFile = strInputFile.substring(1, strInputFile.length() - 1);
+                File fileInput = new File(strInputFile);
+                fileInput.setWritable(true);
+                fileInput.delete();
+
+                strOutputFile = strOutputFile.substring(1, strOutputFile.length() - 1);
+                File fileOutput = new File(strOutputFile);
+                fileOutput.setWritable(true);
+                fileOutput.renameTo(new File(strInputFile));
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private String[] getCommand(String strCmd) {
+        if (isWindows()) {
+            return new String[] { "cmd", "/c", strCmd }; //$NON-NLS-1$
+        } else if (isLinux() || isMacOS()) {
+            return new String[] { "/bin/sh", "-c", strCmd }; //$NON-NLS-1$
+        }
+        return null;
+    }
+
+    private static final int MODE_DEFAULT = 0;
+
+    private static final int MODE_HEADER = 1;
+    private static final int MODE_HEADER_CRASH = 2;
+    private static final int MODE_HEADER_SIGNAL = 3;
+    private static final int MODE_HEADER_REGISTER_INFO = 4;
+    private static final int MODE_HEADER_MEMORY = 5;
+    private static final int MODE_HEADER_PACKAGE = 6;
+
+    private static final int MODE_CALL_STACK_INFO = 12;
+    private static final int MODE_MEMORY_MAP = 13;
+    private static final int MODE_DEBUG_MESSAGE = 14;
+
+    private String strSignalNumber = null;
+    private int mode = MODE_DEFAULT;
+
+    public CSVO parse() {
+        CSVO result = null;
+
+        if (csFile != null) {
+            String strLine = null;
+            FileReader fr = null;
+            BufferedReader br = null;
+
+            mode = MODE_DEFAULT;
+            result = new CSVO();
+
+            try {
+                fr = new FileReader(csFile);
+                br = new BufferedReader(fr);
+
+                while ((strLine = br.readLine()) != null) {
+
+                    strLine = strLine.trim();
+
+                    switch (mode) {
+                        case MODE_DEFAULT:
+                            if (strLine.equals("S/W Version Information"))//$NON-NLS-1$
+                                mode = MODE_HEADER;
+                            else if (strLine.equals("Crash Information"))//$NON-NLS-1$
+                                mode = MODE_HEADER_CRASH;
+                            else if (strLine.equals("Package Information"))//$NON-NLS-1$
+                                mode = MODE_HEADER_PACKAGE;
+                            else if (strLine.startsWith("Register Information"))//$NON-NLS-1$
+                                mode = MODE_HEADER_REGISTER_INFO;
+                            else if (strLine.startsWith("Memory Information"))//$NON-NLS-1$
+                                mode = MODE_HEADER_MEMORY;
+                            else if (strLine.startsWith("Callstack Information"))//$NON-NLS-1$
+                                mode = MODE_CALL_STACK_INFO;
+                            else if (strLine.startsWith("Maps Information"))//$NON-NLS-1$
+                                mode = MODE_MEMORY_MAP;
+                            else if (strLine.startsWith("Latest Debug Message Information"))//$NON-NLS-1$
+                                mode = MODE_DEBUG_MESSAGE;
+                            break;
+
+                        case MODE_HEADER:
+                            if (parseHeader(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_HEADER_CRASH:
+                            if (parseHeaderCrash(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_HEADER_SIGNAL:
+                            if (parseHeaderSignal(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_HEADER_REGISTER_INFO:
+                            if (parseHeaderRegisterInfo(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_HEADER_PACKAGE:
+                            if (parseHeaderPackage(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_HEADER_MEMORY:
+                            if (parseHeaderMemory(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_CALL_STACK_INFO:
+                            if (parseCallStackInfo(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_MEMORY_MAP:
+                            if (parseMemoryMap(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+
+                        case MODE_DEBUG_MESSAGE:
+                            if (parseDebugMessage(result, strLine))
+                                mode = MODE_DEFAULT;
+                            break;
+                    }
+                }
+            } catch (FileNotFoundException e) {
+                e.printStackTrace();
+            } catch (IOException e) {
+                e.printStackTrace();
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                try {
+                    if (fr != null)
+                        fr.close();
+                    if (br != null)
+                        br.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * @param result
+     * @param strLine
+     * @return
+     */
+    /**
+     * @param result
+     * @param strLine
+     * @return
+     */
+    private boolean parseHeader(CSVO result, String strLine) throws Exception {
+
+        boolean isEnd = false;
+
+        int idxSub = -1;
+        String strSub = null;
+
+        if (strLine.isEmpty()) {
+            isEnd = true;
+        } else {
+            HeaderVO header = result.getHeader();
+
+            if (strLine.startsWith("Build-Number:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length());
+                    header.setBuildNumber(strSub);
+                }
+            } else if (strLine.startsWith("Build-Date:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length());
+                    header.setBuildDate(strSub);
+                }
+            } else if (strLine.startsWith("Model:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length());
+                    header.setModel(strSub);
+                }
+            } else if (strLine.startsWith("Tizen-Version:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length());
+                    header.setVersion(strSub);
+                }
+            }
+            result.setHeader(header);
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseHeaderCrash(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        int idxSub = -1;
+        String strSub = null;
+
+        if (strLine.isEmpty()) {
+            isEnd = true;
+        } else {
+            HeaderVO header = result.getHeader();
+
+            if (strLine.startsWith("Date:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setCrashDate(strSub);
+                }
+            } else if (strLine.startsWith("Executable File Path:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setCrashExePath(strSub);
+                }
+            } else if (strLine.startsWith("Process Name:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setProcessName(strSub);
+                }
+            } else if (strLine.startsWith("PID:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setPID(strSub);
+                }
+            } else if (strLine.startsWith("Signal:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.appendSignalLine(strSub);
+                    mode = MODE_HEADER_SIGNAL;
+                }
+            }
+            result.setHeader(header);
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseHeaderSignal(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        if (strLine.isEmpty()) {
+            isEnd = true;
+        } else {
+            HeaderVO header = result.getHeader();
+
+            if (strSignalNumber != null && !strSignalNumber.isEmpty()) {
+                header.appendSignalLine(strSignalNumber);
+                strSignalNumber = null;
+            }
+
+            header.appendSignalLine(strLine);
+            result.setHeader(header);
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseHeaderPackage(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        int idxSub = -1;
+        String strSub = null;
+
+        if (strLine.isEmpty()) {
+            isEnd = true;
+        } else {
+            HeaderVO header = result.getHeader();
+
+            if (strLine.startsWith("Package Name:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setPackageName(strSub);
+                }
+            } else if (strLine.startsWith("Name")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    String strTitle = strLine.substring(0, idxSub).trim();
+                    if (strTitle.equals("Name")) {
+                        strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                        header.setPackageName(strSub);
+                    }
+                }
+            } else if (strLine.startsWith("Package Type:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setPackageType(strSub);
+                }
+            } else if (strLine.startsWith("Version")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setPackageVersion(strSub);
+                }
+            } else if (strLine.startsWith("Release")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    String strTitle = strLine.substring(0, idxSub).trim();
+                    if (strTitle.equals("Release")) {
+                        strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                        String ver = header.getPackageVersion();
+                        if (ver != null) {
+                            ver = ver + "-" + strSub;
+                            header.setPackageVersion(ver);
+                        }
+                    }
+                }
+            } else if (strLine.startsWith("App Name:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setAppName(strSub);
+                }
+            } else if (strLine.startsWith("App ID")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setAppID(strSub);
+                }
+            } else if (strLine.startsWith("Type:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setAppType(strSub);
+                }
+            } else if (strLine.startsWith("Categories:")) {//$NON-NLS-1$
+                idxSub = strLine.indexOf(':');
+                if (idxSub > -1) {
+                    strSub = strLine.substring(idxSub + 1, strLine.length()).trim();
+                    header.setCategories(strSub);
+                }
+            }
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseHeaderRegisterInfo(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        if (strLine.isEmpty()) {
+            isEnd = true;
+        } else {
+            HeaderVO header = result.getHeader();
+
+            ArrayList<RegisterVO> registerList = header.getRegisterList();
+            String[] strsLine = strLine.split(",");//$NON-NLS-1$
+            for (String str : strsLine) {
+                int idxSub = str.indexOf('=');//$NON-NLS-1$
+                if (idxSub > -1) {
+                    RegisterVO registerVO = new RegisterVO(str.substring(0, idxSub).trim(), str
+                            .substring(idxSub + 1, str.length()).trim());
+                    registerList.add(registerVO);
+                }
+            }
+
+            header.setRegisters(registerList);
+            result.setHeader(header);
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseHeaderMemory(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        if (strLine.isEmpty()) {
+            isEnd = true;
+        } else {
+            HeaderVO header = result.getHeader();
+
+            int idxSub = -1;
+            String strSub = null;
+
+            idxSub = strLine.indexOf(":");//$NON-NLS-1$
+            if (idxSub > -1) {
+                strSub = strLine.substring(0, idxSub).trim();
+                if (strSub.equals("MemTotal")) {//$NON-NLS-1$
+                    header.setMemTotal(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("MemFree")) {//$NON-NLS-1$
+                    header.setMemFree(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("Buffers")) {//$NON-NLS-1$
+                    header.setBuffers(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("Cached")) {//$NON-NLS-1$
+                    header.setCached(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmPeak")) {//$NON-NLS-1$
+                    header.setVmPeak(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmSize")) {//$NON-NLS-1$
+                    header.setVmSize(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmLck")) {//$NON-NLS-1$
+                    header.setVmLck(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmPin")) {//$NON-NLS-1$
+                    header.setVmPin(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmHWM")) {//$NON-NLS-1$
+                    header.setVmHWM(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmRSS")) {//$NON-NLS-1$
+                    header.setVmRSS(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmData")) {//$NON-NLS-1$
+                    header.setVmData(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmStk")) {//$NON-NLS-1$
+                    header.setVmStk(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmExe")) {//$NON-NLS-1$
+                    header.setVmExe(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmLib")) {//$NON-NLS-1$
+                    header.setVmLib(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmPTE")) {//$NON-NLS-1$
+                    header.setVmPTE(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                } else if (strSub.equals("VmSwap")) {//$NON-NLS-1$
+                    header.setVmSwap(Integer.parseInt(strLine
+                            .substring(idxSub + 1, strLine.length()).replace(" KB", "").trim()));//$NON-NLS-1$
+                }
+            }
+
+            result.setHeader(header);
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseCallStackInfo(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        if (strLine.equals("End of Call Stack")) {//$NON-NLS-1$
+            isEnd = true;
+        } else if (strLine.startsWith("Call Stack Count:")) {//$NON-NLS-1$
+            // Ignore
+        } else {
+            ArrayList<CallStackVO> csList = result.getCallStackList();
+
+            int idxSub = -1;
+            int idxL = -1, idxR = -1;
+            int countP = 0;
+
+            CallStackVO csVO = new CallStackVO();
+
+            idxSub = strLine.indexOf(":");
+            if (idxSub > -1)
+                csVO.setSerialNumber(Integer.parseInt(strLine.substring(0, idxSub).trim()));
+
+            // emluator vs. target
+            boolean isAbnormalAddressFormat = false;
+            String strAddressTemp = null;
+            long addressTemp = 0l;
+            idxL = strLine.indexOf('[');
+            idxR = strLine.indexOf(']');
+            if (idxL > -1 && idxR > -1) {
+                strAddressTemp = strLine.substring(idxL + 1, idxR).trim();
+                if (strAddressTemp != null) {
+                    try {
+                        if (strAddressTemp.startsWith("0x"))//$NON-NLS-1$
+                            strAddressTemp = strAddressTemp.substring(2, strAddressTemp.length());
+                        addressTemp = Long.parseLong(strAddressTemp, 16);
+                    } catch (NumberFormatException e) {
+                        isAbnormalAddressFormat = true;
+                    }
+                }
+            }
+
+            if (isAbnormalAddressFormat) {
+                // Target
+
+                idxL = 0;
+                idxR = 0;
+                countP = countParentheses(strLine);
+                if (countP > 0) {
+                    for (int i = 0; i < countP; i++) {
+                        idxL = strLine.indexOf("(", idxL);//$NON-NLS-1$
+                        if (idxL > -1) {
+                            idxR = strLine.indexOf(")", idxL);//$NON-NLS-1$
+                            if (idxR > -1) {
+                                if (idxL + 3 < idxR) {
+                                    long longTemp = getAddress(strLine.substring(idxL + 1, idxR)
+                                            .trim());
+                                    if (longTemp != 0) {
+                                        csVO.setAddressS(strLine.substring(idxL + 1, idxR).trim());
+                                        csVO.setAddressL(longTemp);
+                                        csVO.setPayload(strLine);
+
+                                        csList.add(csVO);
+                                        result.setCallStackList(csList);
+                                        break;
+                                    } else {
+                                        idxL = idxR;
+                                    }
+                                } else {
+                                    idxL = idxR;
+                                }
+                            }
+                        }
+                    }
+                }
+            } else {
+                // Emulator
+                csVO.setAddressS(strAddressTemp);
+                csVO.setAddressL(addressTemp);
+
+                if (idxSub > 0 && idxL > 0)
+                    csVO.setPayload(strLine.substring(idxSub, idxL).trim());
+                csList.add(csVO);
+                result.setCallStackList(csList);
+            }
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseMemoryMap(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        if (strLine.equals("End of Maps Information")) {//$NON-NLS-1$
+            isEnd = true;
+        } else if (!strLine.isEmpty()) {
+            ArrayList<MemoryMapVO> memoryMapList = result.getMemoryMapList();
+
+            int idxStart = 0, idxEnd = -1;
+            String strSub = null;
+            MemoryMapVO memoryMapVO = new MemoryMapVO();
+
+            idxEnd = strLine.indexOf(" ");//$NON-NLS-1$
+            if (idxEnd > -1) {
+                strSub = strLine.substring(idxStart, idxEnd).trim();
+                memoryMapVO.setStartAddressS(strSub);
+                memoryMapVO.setStartAddressL(Long.parseLong(strSub, 16));
+            }
+            idxStart = idxEnd + 1;
+            idxEnd = strLine.indexOf(" ", idxStart);//$NON-NLS-1$
+            if (idxEnd > -1) {
+                strSub = strLine.substring(idxStart, idxEnd).trim();
+                memoryMapVO.setEndAddressS(strSub);
+                memoryMapVO.setEndAddressL(Long.parseLong(strSub, 16));
+            }
+            idxStart = idxEnd + 1;
+            idxEnd = strLine.indexOf(" ", idxStart);//$NON-NLS-1$
+            if (idxEnd > -1) {
+                strSub = strLine.substring(idxStart, idxEnd).trim();
+                memoryMapVO.setMod(strSub);
+            }
+            idxStart = idxEnd + 1;
+            idxEnd = strLine.length();
+            if (idxEnd > -1) {
+                strSub = strLine.substring(idxStart, idxEnd).trim();
+                memoryMapVO.setSoInfo(strSub);
+            }
+
+            memoryMapList.add(memoryMapVO);
+            result.setMemoryMapList(memoryMapList);
+        }
+
+        return isEnd;
+    }
+
+    private boolean parseDebugMessage(CSVO result, String strLine) throws Exception {
+        boolean isEnd = false;
+
+        if (strLine.startsWith("end of latest dmf")) {//$NON-NLS-1$
+            isEnd = true;
+        } else {
+            boolean isAbnormalLine = false;
+            ArrayList<DebugMessageVO> debugMessageList = result.getDebugMessageList();
+
+            int idxStart = -1, idxEnd = -1;
+            String strSub = null;
+            DebugMessageVO debugMessageVO = new DebugMessageVO();
+
+            idxEnd = strLine.indexOf(" ");//$NON-NLS-1$
+            if (idxEnd > -1) {
+                strSub = strLine.substring(0, idxEnd);
+                idxStart = idxEnd + 1;
+                idxEnd = strLine.indexOf(" ", idxStart);//$NON-NLS-1$
+                if (idxEnd > -1) {
+                    strSub = strLine.substring(0, idxEnd).trim();
+                    debugMessageVO.setDate(strSub);
+                } else {
+                    isAbnormalLine = true;
+                }
+            }
+            idxStart = idxEnd + 1;
+            idxEnd = strLine.indexOf("(", idxStart);//$NON-NLS-1$
+            if (idxEnd > -1) {
+                strSub = strLine.substring(idxStart, idxEnd).trim();
+                debugMessageVO.setTag(strSub);
+            } else {
+                isAbnormalLine = true;
+            }
+            idxStart = idxEnd + 1;
+            idxEnd = strLine.indexOf(")", idxStart);//$NON-NLS-1$
+            if (idxEnd > -1) {
+                strSub = strLine.substring(idxStart, idxEnd).trim();
+                debugMessageVO.setPID(strSub);
+            } else {
+                isAbnormalLine = true;
+            }
+            idxStart = strLine.indexOf(":", idxEnd);//$NON-NLS-1$
+            if (idxStart > -1) {
+                strSub = strLine.substring(idxStart + 1, strLine.length()).trim();
+                debugMessageVO.setMessage(strSub);
+            } else {
+                isAbnormalLine = true;
+            }
+
+            if (!isAbnormalLine)
+                debugMessageList.add(debugMessageVO);
+            result.setDebugMessageList(debugMessageList);
+        }
+
+        return isEnd;
+    }
+
+    private int countParentheses(String strLine) {
+        int result = 0;
+        int i, len = 0;
+        boolean isLeft = false;
+
+        if (strLine != null)
+            len = strLine.length();
+
+        for (i = 0; i < len; i++) {
+            if (strLine.charAt(i) == '(')
+                isLeft = true;
+
+            if (isLeft && strLine.charAt(i) == ')') {
+                result++;
+                isLeft = false;
+            }
+        }
+
+        return result;
+    }
+
+    private long getAddress(String strLine) {
+        long result = 0;
+
+        if (strLine != null && strLine.startsWith("0x")) {//$NON-NLS-1$
+            strLine = strLine.substring(3, strLine.length()).trim();
+            result = Long.parseLong(strLine, 16);
+        }
+
+        return result;
+    }
+
+    /*
+     * From OSChecker.java
+     */
+    public String PROPERTY_OS_NAME = (System.getProperty("os.name") != null) //$NON-NLS-1$
+    ? System.getProperty("os.name").toLowerCase() : ""; //$NON-NLS-1$
+
+    public boolean isWindows() {
+        if (PROPERTY_OS_NAME.contains("windows")) { //$NON-NLS-1$
+            return true;
+        }
+        return false;
+    }
+
+    public boolean isLinux() {
+        if (PROPERTY_OS_NAME.contains("linux")) { //$NON-NLS-1$
+            return true;
+        }
+        return false;
+    }
+
+    public boolean isMacOS() {
+        if (PROPERTY_OS_NAME.contains("mac")) { //$NON-NLS-1$
+            return true;
+        }
+        return false;
+    }
 }
index f64aed0..8a0df21 100644 (file)
@@ -40,15 +40,14 @@ import org.tizen.nativeplatform.types.CmdTargetTypes;
 import org.tizen.nativeplatform.util.PlatformLaunchUtil;
 import org.tizen.sdblib.service.FileEntry;
 
-
-public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
+public class PlatformLaunchSettingCorePage extends PlatformLaunchCommonPage {
     private final String BUNDLE_NAME = PlatformLaunchSettingCorePage.class.getPackage().getName()
             + ".LaunchWizardPageUIMessages";//$NON-NLS-1$
     private ResourceBundle resources = ResourceBundle.getBundle(BUNDLE_NAME);
-    
+
     private PlatformCoredumpLaunchWizard wizard;
     private PkgCommandTarget target;
-    
+
     private Group swInfoGroup;
     private Group pkgInfoGroup;
     private Group crashInfoGroup;
@@ -56,7 +55,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
     private FileEntry remoteDumpFile;
     private String localDumpFile;
     private CSVO csvo = null;
-    
+
     private Label lPkgName;
     private Label lPkgVer;
     private Label lProcName;
@@ -85,7 +84,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         setPageComplete(false);
         setErrorMessage(null);
     }
-    
+
     @Override
     public void createControl(Composite parent) {
         Composite composite = new Composite(parent, SWT.NONE);
@@ -101,29 +100,29 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         createCrashInfoControl(composite);
         setControl(composite);
     }
-    
+
     public void createSwInfoControl(Composite parent) {
         swInfoGroup = new Group(parent, SWT.NONE);
         swInfoGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
         swInfoGroup.setLayout(new GridLayout(2, false));
         swInfoGroup.setText(resources.getString("CorePage.Group.Swinfo"));
-        
+
         Label Model = new Label(swInfoGroup, SWT.NONE);
         Model.setText(resources.getString("CorePage.Label.Model"));
         lModel = new Label(swInfoGroup, SWT.NONE);
         lModel.setText("");
-        Label BuildNum= new Label(swInfoGroup, SWT.NONE);
+        Label BuildNum = new Label(swInfoGroup, SWT.NONE);
         BuildNum.setText(resources.getString("CorePage.Label.BuildNum"));
         lBuildNum = new Label(swInfoGroup, SWT.NONE);
         lBuildNum.setText("");
     }
-    
+
     public void createCrashInfoControl(Composite parent) {
         crashInfoGroup = new Group(parent, SWT.NONE);
         crashInfoGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
         crashInfoGroup.setLayout(new GridLayout(2, false));
         crashInfoGroup.setText(resources.getString("CorePage.Group.Crashinfo"));
-        
+
         Label ProcName = new Label(crashInfoGroup, SWT.NONE);
         ProcName.setText(resources.getString("CorePage.Label.Procname"));
         lProcName = new Label(crashInfoGroup, SWT.NONE);
@@ -137,13 +136,13 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         lExec = new Label(crashInfoGroup, SWT.NONE);
         lExec.setText("");
     }
-    
+
     public void createPkgInfoControl(Composite parent) {
         pkgInfoGroup = new Group(parent, SWT.NONE);
         pkgInfoGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
         pkgInfoGroup.setLayout(new GridLayout(2, false));
         pkgInfoGroup.setText(resources.getString("CorePage.Group.Pkginfo"));
-        
+
         Label PkgName = new Label(pkgInfoGroup, SWT.NONE);
         PkgName.setText(resources.getString("CorePage.Label.Pkgname"));
         lPkgName = new Label(pkgInfoGroup, SWT.NONE);
@@ -153,7 +152,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         lPkgVer = new Label(pkgInfoGroup, SWT.NONE);
         lPkgVer.setText("");
     }
-    
+
     private void createCorefileControl(Composite parent) {
         Composite composite = new Composite(parent, SWT.NULL);
         composite.setLayout(new GridLayout(3, false));
@@ -174,14 +173,14 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
                     resetControl();
 
                     originCoredumpPath = remoteDumpFile.getFullPath();
-                    
+
                     // check archive file type (.tar.gz)
                     boolean isArchiveFile = false;
                     String fileName = FileUtil.getFileNameFromPath(originCoredumpPath);
                     String[] exts = fileName.split("\\.");
                     if (exts.length >= 3) {
                         int length = exts.length;
-                        if (exts[length-1].equals("gz") && exts[length-2].equals("tar")) {
+                        if (exts[length - 1].equals("gz") && exts[length - 2].equals("tar")) {
                             isArchiveFile = true;
                         }
                     }
@@ -191,13 +190,13 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
                         setPageComplete(false);
                         return;
                     }
-                    
+
                     // extract archive file and pull *.coredump and *.cs files
                     processRemoteDumpfile(originCoredumpPath);
 
                     if (csvo != null) {
-                        coredumpModel = new CoredumpModel(originCoredumpPath, coredumpPath, 
-                                csvo, CoredumpModel.LOCATION.REMOTE);
+                        coredumpModel = new CoredumpModel(originCoredumpPath, coredumpPath, csvo,
+                                CoredumpModel.LOCATION.REMOTE);
                         if (target.getCommander(CmdTargetTypes.HOST).is80386File(coredumpPath)) {
                             coredumpModel.setX86coredump(true);
                         } else if (target.getCommander(CmdTargetTypes.HOST).isArmFile(coredumpPath)) {
@@ -235,7 +234,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
                     String[] exts = fileName.split("\\.");
                     if (exts.length >= 3) {
                         int length = exts.length;
-                        if (exts[length-1].equals("gz") && exts[length-2].equals("tar")) {
+                        if (exts[length - 1].equals("gz") && exts[length - 2].equals("tar")) {
                             isArchiveFile = true;
                         }
                     }
@@ -245,13 +244,13 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
                         setPageComplete(false);
                         return;
                     }
-                    
+
                     // extract archive file and pull *.coredump and *.cs files
                     processLocalDumpfile(localDumpFile);
 
                     if (csvo != null) {
-                        coredumpModel = new CoredumpModel(originCoredumpPath, coredumpPath, 
-                                csvo, CoredumpModel.LOCATION.LOCAL);
+                        coredumpModel = new CoredumpModel(originCoredumpPath, coredumpPath, csvo,
+                                CoredumpModel.LOCATION.LOCAL);
                         if (target.getCommander(CmdTargetTypes.HOST).is80386File(coredumpPath)) {
                             coredumpModel.setX86coredump(true);
                         } else if (target.getCommander(CmdTargetTypes.HOST).isArmFile(coredumpPath)) {
@@ -268,7 +267,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         });
         setControl(composite);
     }
-    
+
     private void processRemoteDumpfile(final String filePath) {
         tFilePath.setText(filePath);
         final IWizardContainer container = getContainer();
@@ -280,10 +279,11 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
                     monitor.subTask("Downloading coredump archive...");
                     try {
                         CoredumpSelectionHandler handler = new CoredumpSelectionHandler(target);
-                        String[] coreFiles = handler.processRemoteCorefile(remoteDumpFile, 
+                        String[] coreFiles = handler.processRemoteCorefile(remoteDumpFile,
                                 new SubProgressMonitor(monitor, 1));
                         if (coreFiles == null) {
-                            errorMessage = resources.getString("CorePage.ErrorMsg.FailedDownloadCoredump");
+                            errorMessage = resources
+                                    .getString("CorePage.ErrorMsg.FailedDownloadCoredump");
                             wizard.openErrorDialog(errorMessage);
                             return;
                         }
@@ -313,7 +313,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
             logger.error(errorMessage, e);
         }
     }
-    
+
     private void processLocalDumpfile(String filePath) {
         tFilePath.setText(filePath);
         final IWizardContainer container = getContainer();
@@ -328,7 +328,8 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
                         String[] coreFiles = handler.processLocalCorefile(localDumpFile,
                                 new SubProgressMonitor(monitor, 1));
                         if (coreFiles == null) {
-                            errorMessage = resources.getString("CorePage.ErrorMsg.FailedExtractCoredump");
+                            errorMessage = resources
+                                    .getString("CorePage.ErrorMsg.FailedExtractCoredump");
                             wizard.openErrorDialog(errorMessage);
                             return;
                         }
@@ -373,11 +374,15 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         setErrorMessage(null);
         setPageComplete(false);
     }
-    
+
     private void updateControl() {
         lModel.setText(": " + csvo.getHeader().getModel());
         lBuildNum.setText(": " + csvo.getHeader().getBuildNumber());
-        String name = String.format("%s (%s)", csvo.getHeader().getPackageName(), csvo.getHeader().getPackageType());
+        String name = csvo.getHeader().getPackageName();
+        String pkgType = csvo.getHeader().getPackageType();
+        if (pkgType != null) {
+            name = name + " (" + pkgType + ")";
+        }
         lPkgName.setText(": " + name);
         lPkgVer.setText(": " + csvo.getHeader().getPackageVersion());
         lProcName.setText(": " + csvo.getHeader().getProcessName());
@@ -391,13 +396,13 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         String arch = "";
         if (coredumpModel.isX86coredump()) {
             arch = "80386";
-        } else if (coredumpModel.isArmcoredump()){
+        } else if (coredumpModel.isArmcoredump()) {
             arch = "ARM";
         }
         setMessage(resources.getString("CorePage.Msg.SetCoredump") + String.format(" (%s)", arch));
         setPageComplete(true);
     }
-    
+
     private String readCsFile(String filePath) {
         BufferedReader br = null;
         StringBuilder sb = null;
@@ -413,7 +418,7 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
             }
         } catch (Exception e) {
             e.printStackTrace();
-            String msg = String.format(resources.getString("CorePage.ErrorMsg.FailedReadCsfile"), 
+            String msg = String.format(resources.getString("CorePage.ErrorMsg.FailedReadCsfile"),
                     filePath);
             logger.error(msg, e);
         } finally {
@@ -424,11 +429,11 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
         }
         return "";
     }
-    
+
     private FileEntry handleBrowseButtonSelected() {
         final Shell shell = getAvailableShell();
         FileEntry path = PlatformLaunchUtil.selectRemoteFile(shell,
-                resources.getString("CorePage.Browse.Title"), 
+                resources.getString("CorePage.Browse.Title"),
                 TizenPlatformConstants.DEBUG_COREFILE_PATH);
         return path;
     }
@@ -436,11 +441,11 @@ public class PlatformLaunchSettingCorePage  extends PlatformLaunchCommonPage {
     public String getBinaryPath() {
         return binaryPath;
     }
-    
+
     public CoredumpModel getCoredumpModel() {
         return coredumpModel;
     }
-    
+
     public String getCsFileContent() {
         return csFileContent;
     }