/*******************************************************************************
* Copyright (c) 2005, 2008 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.testplugin;
import java.io.File;
import java.io.IOException;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.debug.core.cdi.ICDISession;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.cdt.debug.mi.core.MIPlugin;
import org.eclipse.cdt.debug.mi.core.command.MIVersion;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
/**
* Helper methods to set up a Debug session.
*/
public class CDebugHelper {
/**
* Creates a ICDISession.
*/
public static ICDISession createSession(String exe) throws IOException, MIException {
MIPlugin mi;
ICDISession session;
String os = System.getProperty("os.name");
String exename;
mi=MIPlugin.getDefault();
exename=org.eclipse.core.runtime.Platform.getPlugin("org.eclipse.cdt.debug.ui.tests").find(new Path("/")).getFile();
exename+="core/org/eclipse/cdt/debug/core/tests/resources/";
os=os.toLowerCase();
/* We need to get the correct executable to execute
*/
if (os.indexOf("windows")!=-1)
exename+="win/"+ exe +".exe";
else if (os.indexOf("qnx")!=-1)
exename+="qnx/" + exe;
else if (os.indexOf("linux")!=-1)
exename+="linux/"+exe;
else if (os.indexOf("sol")!=-1)
exename+="sol/" + exe;
else
return(null);
session=mi.createCSession(null, MIVersion.MI1, new File(exename), new File("."), null, null);
return(session);
}
/**
* Creates a ICDISession.
*/
public static ICDISession createSession(String exe, ICProject project) throws IOException, MIException, CModelException {
MIPlugin mi;
String workspacePath= Platform.getLocation().toOSString();
ICDISession session;
mi=MIPlugin.getDefault();
try {
project.getProject().refreshLocal(IResource.DEPTH_INFINITE, null);
} catch (Exception exc) {}
IBinary bins[] = project.getBinaryContainer().getBinaries();
if (bins.length!=1) {
//SHOULD NOT HAPPEN
return(null);
}
session=mi.createCSession(null, MIVersion.MI1, new File(workspacePath +bins[0].getPath().toOSString()), new File("."), null, null);
return(session);
}
}