mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
fail launch on unrecognized binary file
This commit is contained in:
parent
119a911081
commit
08412e5d6d
5 changed files with 15 additions and 6 deletions
|
@ -407,7 +407,6 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
|
||||||
LaunchMessages.getFormattedString(
|
LaunchMessages.getFormattedString(
|
||||||
"AbstractCLaunchDelegate.PROGRAM_PATH_not_found", programPath.toOSString())), //$NON-NLS-1$
|
"AbstractCLaunchDelegate.PROGRAM_PATH_not_found", programPath.toOSString())), //$NON-NLS-1$
|
||||||
ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
|
ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
|
||||||
|
|
||||||
}
|
}
|
||||||
return programPath;
|
return programPath;
|
||||||
}
|
}
|
||||||
|
@ -750,7 +749,7 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
|
||||||
* @return
|
* @return
|
||||||
* @throws CoreException
|
* @throws CoreException
|
||||||
*/
|
*/
|
||||||
protected IBinaryExecutable createBinary(ICProject project, IPath exePath) throws CoreException {
|
protected IBinaryExecutable verifyBinary(ICProject project, IPath exePath) throws CoreException {
|
||||||
ICExtensionReference[] parserRef = CCorePlugin.getDefault().getBinaryParserExtensions(project.getProject());
|
ICExtensionReference[] parserRef = CCorePlugin.getDefault().getBinaryParserExtensions(project.getProject());
|
||||||
for (int i = 0; i < parserRef.length; i++) {
|
for (int i = 0; i < parserRef.length; i++) {
|
||||||
try {
|
try {
|
||||||
|
@ -766,9 +765,17 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
|
||||||
IBinaryParser parser = CCorePlugin.getDefault().getDefaultBinaryParser();
|
IBinaryParser parser = CCorePlugin.getDefault().getDefaultBinaryParser();
|
||||||
try {
|
try {
|
||||||
return (IBinaryExecutable)parser.getBinary(exePath);
|
return (IBinaryExecutable)parser.getBinary(exePath);
|
||||||
|
} catch (ClassCastException e) {
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
}
|
}
|
||||||
return null;
|
Throwable exception = new FileNotFoundException(LaunchMessages.getFormattedString(
|
||||||
|
"AbstractCLaunchDelegate.PROGRAM_PATH_not_binary", exePath.toOSString()));
|
||||||
|
int code = ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_BINARY;
|
||||||
|
MultiStatus status = new MultiStatus(getPluginID(), code, LaunchMessages
|
||||||
|
.getString("AbstractCLaunchDelegate.Program_is_not_a_recongnized_executable"), exception);
|
||||||
|
status.add(new Status(IStatus.ERROR, getPluginID(), code, exception == null ? "" : exception.getLocalizedMessage(), //$NON-NLS-1$
|
||||||
|
exception));
|
||||||
|
throw new CoreException(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class CoreFileLaunchDelegate extends AbstractCLaunchDelegate {
|
||||||
monitor.worked(1);
|
monitor.worked(1);
|
||||||
IPath exePath = verifyProgramPath(config);
|
IPath exePath = verifyProgramPath(config);
|
||||||
ICProject project = verifyCProject(config);
|
ICProject project = verifyCProject(config);
|
||||||
IBinaryExecutable exeFile = createBinary(project, exePath);
|
IBinaryExecutable exeFile = verifyBinary(project, exePath);
|
||||||
|
|
||||||
ICDebugConfiguration debugConfig = getDebugConfig(config);
|
ICDebugConfiguration debugConfig = getDebugConfig(config);
|
||||||
ICDISession dsession = null;
|
ICDISession dsession = null;
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class LocalAttachLaunchDelegate extends AbstractCLaunchDelegate {
|
||||||
monitor.worked(1);
|
monitor.worked(1);
|
||||||
IPath exePath = verifyProgramPath(config);
|
IPath exePath = verifyProgramPath(config);
|
||||||
ICProject project = verifyCProject(config);
|
ICProject project = verifyCProject(config);
|
||||||
IBinaryExecutable exeFile = createBinary(project, exePath);
|
IBinaryExecutable exeFile = verifyBinary(project, exePath);
|
||||||
|
|
||||||
if (mode.equals(ILaunchManager.DEBUG_MODE)) {
|
if (mode.equals(ILaunchManager.DEBUG_MODE)) {
|
||||||
ICDebugConfiguration debugConfig = getDebugConfig(config);
|
ICDebugConfiguration debugConfig = getDebugConfig(config);
|
||||||
|
|
|
@ -55,7 +55,7 @@ public class LocalRunLaunchDelegate extends AbstractCLaunchDelegate {
|
||||||
monitor.worked(1);
|
monitor.worked(1);
|
||||||
IPath exePath = verifyProgramPath(config);
|
IPath exePath = verifyProgramPath(config);
|
||||||
ICProject project = verifyCProject(config);
|
ICProject project = verifyCProject(config);
|
||||||
IBinaryExecutable exeFile = createBinary(project, exePath);
|
IBinaryExecutable exeFile = verifyBinary(project, exePath);
|
||||||
String arguments[] = getProgramArgumentsArray(config);
|
String arguments[] = getProgramArgumentsArray(config);
|
||||||
|
|
||||||
// set the default source locator if required
|
// set the default source locator if required
|
||||||
|
|
|
@ -25,6 +25,8 @@ AbstractCLaunchDelegate.building=Building
|
||||||
AbstractCLaunchDelegate.searching_for_errors=Searching for compile errors
|
AbstractCLaunchDelegate.searching_for_errors=Searching for compile errors
|
||||||
AbstractCLaunchDelegate.searching_for_errors_in=Searching for compile errors in
|
AbstractCLaunchDelegate.searching_for_errors_in=Searching for compile errors in
|
||||||
AbstractCLaunchDelegate.20=Building prerequisite project list
|
AbstractCLaunchDelegate.20=Building prerequisite project list
|
||||||
|
AbstractCLaunchDelegate.PROGRAM_PATH_not_binary=Program not Binary
|
||||||
|
AbstractCLaunchDelegate.Program_is_not_a_recongnized_executable=Program not a recognized executable.
|
||||||
|
|
||||||
LocalRunLaunchDelegate.Launching_Local_C_Application=Launching Local C/C++ Application
|
LocalRunLaunchDelegate.Launching_Local_C_Application=Launching Local C/C++ Application
|
||||||
LocalRunLaunchDelegate.Failed_setting_runtime_option_though_debugger=Failed to set program arguments, environemt or working directory.
|
LocalRunLaunchDelegate.Failed_setting_runtime_option_though_debugger=Failed to set program arguments, environemt or working directory.
|
||||||
|
|
Loading…
Add table
Reference in a new issue