#!/bin/sh ############################################################################### # Copyright (c) 2014, 2015 Red Hat, Inc. 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: # Red Hat Inc. - initial API and implementation # Marc Khouzam (Ericsson) - Update for remote debugging support (bug 450080) ############################################################################### SCRIPT_DIR=`dirname $0` usage="\ Usage: $0 [ECLIPSE_OPTIONS] [-b BUILD_LOG] [TARGET_OPTION] Debug an executable, core-file, or an existing process using the Eclipse C/C++ Stand-alone Debugger. Eclipse command-line options may be passed except for -vmargs which is being used to start up the Eclipse Debugger. Operation modes: -h, --help print this help, then exit Indexing assist options: -b BUILD_LOG build log to use for compiler includes/flags Target options: -a [pid] attach using the optional pid or prompt for a pid -c COREFILE debug core-file (should also specify executable) -e EXECUTABLE [ARGS...] debug given executable (passing ARGS to main) -r ADDRESS:PORT debug toward the specified remote server. Can be combined with the -a option. The -e option must be used last as subsequent options are passed to main. Specifying insufficient arguments for a particular target will result in a dialog displayed to enter the required values for that target. Specifying no target option brings up a dialog for debugging an executable with the executable path, program arguments, and build log filled in from the last -e invocation, if one exists. Wiki page: " exit_missing_arg=' echo $0": error: option [$1] requires an argument"; exit 1' # Parse command line. options= while test $# -gt 0 ; do case $1 in --help | -h ) echo "$usage"; exit ;; -vmargs ) echo $0": error: -vmargs option is prohibited"; exit 1;; -e ) test $# = 1 && eval "$exit_missing_arg" options="$options $1 $2" shift; shift; # Get all options after -e and protect them from being # processed by Eclipse as Eclipse options while test $# -gt 0; do options="$options \"$1\"" shift; done ;; -c | -r ) test $# = 1 && eval "$exit_missing_arg" options="$options $1 $2" shift; shift ;; * ) options="$options $1"; shift ;; esac done # Make sure local directory exists and has contents initialized if [ ! -d "$HOME/cdtdebugger" ]; then /bin/sh "$SCRIPT_DIR/install.sh" || exit fi # Calculate platform-specific jar file names ECLIPSE_HOME=$(cd "$SCRIPT_DIR/../../.." && pwd) # install.sh will modify this line. DO NOT REMOVE THE FOLLOWING MARKER: @#@# ECLIPSE_EXEC="$ECLIPSE_HOME/eclipse" # On macOS, the application layout is a bit different (Eclipse.app) case $ECLIPSE_HOME in *MacOS) ECLIPSE_HOME="$ECLIPSE_HOME/../Eclipse" ;; esac PLUGIN_DIR="$ECLIPSE_HOME/plugins" OSGI_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.osgi_*.jar' -not -name '*source*' -exec basename {} \; | tail -1` # Run eclipse with the Stand-alone Debugger product specified "$ECLIPSE_EXEC" -clean -product org.eclipse.cdt.debug.application.product \ -data "$HOME/workspace-cdtdebug" -configuration file\:"$HOME/cdtdebugger" \ -dev file\:"$HOME/cdtdebugger/dev.properties" $options \ -vmargs -Dosgi.jar=$OSGI_JAR -Declipse.home="$ECLIPSE_HOME"