|
|
(9 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | This page details the effort to create a stand-alone Debugger using Eclipse.
| + | {{warning|Note: The contents of this page has been migrated to GitHub. Please see the [https://github.com/eclipse-cdt/cdt/blob/main/StandaloneDebugger.md Standalone Debugger] for current information, or the page history for historical versions. }} |
− | | + | |
− | == What is it? ==
| + | |
− | | + | |
− | The Standalone Debugger is an Eclipse application that starts up a subset of the Eclipse CDT plug-ins that pertain | + | |
− | specifically to debugging. The application has an accompanying command-line script which allows an end-user to
| + | |
− | start up the debugger from the command-line and pass arguments that will start the debugger for the appropriate task.
| + | |
− | | + | |
− | The end-user can specify either to debug an application, to attach to an existing process, or to debug a core-file.
| + | |
− | In addition, a build log can be specified to aid the Debugger in locating include files and knowing what flags were
| + | |
− | used to compile the source code.
| + | |
− | | + | |
− | Usage: <nowiki>cdtdebug.sh [ECLIPSE_OPTIONS] [-b BUILD_LOG] [TARGET_OPTION]</nowiki>
| + | |
− | | + | |
− | 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 attach to an existing process (list will be shown)
| + | |
− | -c COREFILE debug core-file (should also specify executable)
| + | |
− | -e EXECUTABLE [ARGS...] debug given executable (passing ARGS to main)
| + | |
− | | + | |
− | 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: <http://wiki.eclipse.org/CDT/StandaloneDebugger>
| + | |
− | | + | |
− | The Standalone Debugger is designed to make debugging easier for the C/C++ developer that has little to no experience with Eclipse.
| + | |
− | | + | |
− | Normally, to use the C/C++ tools in Eclipse, a user needs to set up an Eclipse project. The project has natures which dictates various menus and actions
| + | |
− | that are appropriate for the project. For C/C++, there are multiple natures that may apply due to the fact that there are multiple ways such a project
| + | |
− | may be built (e.g. an Autotools vs a project which maintains its own Makefile). Rather than impose the Eclipse project model on the end-user that just wishes
| + | |
− | to debug, the Standalone Debugger automatically creates a project on behalf of the end-user. As mentioned, the Standalone Debugger only loads a subset of the CDT plug-ins pertaining
| + | |
− | to debugging and build plug-ins are not included in this list. Thus, the Standalone debugger does not have to be concerned with adding natures pertaining
| + | |
− | to build and can default the project type on behalf of the end-user.
| + | |
− | | + | |
− | In addition, to debug an application, or an attached process, or a core-file, a user would normally have to set up
| + | |
− | an Eclipse launch configuration. Launch configurations store all the information required to launch an application such as
| + | |
− | what application is being launched, parameters passed, environment variables, etc... In the case of a debug launch configuration this
| + | |
− | includes what debugger is used and parameters to the debugger itself. Launch configurations can have different types based on what
| + | |
− | is being launched. Rather than force an end-user to deal with this, the Standalone Debugger creates a launch configuration on behalf of
| + | |
− | the end-user based on the command-line parameters used. As well, the debug session is automatically started so the end-user basically
| + | |
− | just has to start debugging which is fairly intuitive in the Eclipse IDE.
| + | |
− | | + | |
− | [[Image:StandaloneDebuggerScreenshot.png]] | + | |
− | | + | |
− | == How to try it out ==
| + | |
− | | + | |
− | There are two flavours of the Standalone Debugger:
| + | |
− | | + | |
− | # Downloaded from eclipse.org
| + | |
− | # Installed as part of a Linux distro
| + | |
− | | + | |
− | To try out the Standalone Debugger from eclipse.org:
| + | |
− | | + | |
− | # Download the IDE for C/C++ Developers Luna EPP product tar file for your platform
| + | |
− | #* https://www.eclipse.org/downloads/index-developer.php
| + | |
− | # Untar the C/C++ IDE into a local directory (let's call this $CPP_LUNA_M7_DIR)
| + | |
− | # cd $CPP_LUNA_M7_DIR/eclipse/plugins/org.eclipse.cdt.debug.application_*/scripts
| + | |
− | # There, run the command:
| + | |
− | #* /bin/sh ./install.sh
| + | |
− | #* this will create the directory: $HOME/cdtdebugger for you where the cdtdebug.sh script will be installed
| + | |
− | # To run the debugger:
| + | |
− | #* $HOME/cdtdebugger/cdtdebug.sh ... (see above or use --help option for arguments)
| + | |
− | #* this will default to use the workspace: workspace-cdtdebug if you do not specifiy a workspace via the -data option
| + | |
− | | + | |
− | To try out the Standalone Debugger on a Linux distro:
| + | |
− | | + | |
− | # Install or update the eclipse-cdt package to 8.4.0-1 or higher
| + | |
− | # The installation of the package will install a cdtdebug script for you in a shared folder (e.g. /usr/bin/cdtdebug)
| + | |
− | # Running the cdtdebug binary will create a unique folder for you in your $HOME directory (e.g. $HOME/fcdtdebugger for Fedora)
| + | |
− | #* This enables you to have both the downloaded version and installed distro version at the same time
| + | |
− | # cdtdebug .... (see above or use --help option for arguments)
| + | |
− | | + | |
− | The two versions are essentially the same except for the config.ini files that are used in start-up. For a distro version
| + | |
− | of eclipse-cdt, CDT plug-ins and features need to be specified as file locations whereas in the download case, it is sufficient
| + | |
− | to specify Eclipse bundle names.
| + | |
− | | + | |
− | In the case of the downloaded version, updating some plug-ins and features is fine since the bundle names do not change.
| + | |
− | For the distro version, the CDT is updated by updating the entire eclipse-cdt package at once and this will update the
| + | |
− | cdtdebug script and its accompanying config.ini file.
| + | |
− | | + | |
− | Mixing the two types of CDT is not supported for the Standalone Debugger. This can occur if the user installs a distro version
| + | |
− | of the Eclipse platform and then uses the Eclipse Update within the IDE to download the CDT Standalone Debugger from eclipse.org.
| + | |
− | This installs the feature and plug-ins into the user's local $HOME/.eclipse folder. Running the install.sh script from there
| + | |
− | will check for this and give an error.
| + | |
− | | + | |
− | == Status ==
| + | |
− | | + | |
− | === Sept 17, 2013 ===
| + | |
− | | + | |
− | * first pass at standalone GDB debugger using CDT components
| + | |
− | * using Eclipse application and restricting plug-ins used
| + | |
− | * debugger is working but indexer is not being invoked
| + | |
− | * header files not being recognized
| + | |
− | | + | |
− | === Sept 23, 2013 ===
| + | |
− | | + | |
− | * added default GCC spec file LanguageSettingsProvider
| + | |
− | * this gets standard header files to open in Outline view
| + | |
− | | + | |
− | === Sept 30, 2013 ===
| + | |
− | | + | |
− | * added code to add all source files specified as Project resources
| + | |
− | * this gets indexer to work and adds non-C-standard header file support
| + | |
− | | + | |
− | === Oct 07, 2013 ===
| + | |
− | | + | |
− | * Removed Source and Refactoring menus using IActivity filters
| + | |
− | | + | |
− | === Oct 14, 2013 ===
| + | |
− | | + | |
− | * added support for reading .debug_macro section to find command-line flags
| + | |
− | ** currently not being picked up by indexer for header files
| + | |
− | | + | |
− | === Oct 21, 2013 ===
| + | |
− | | + | |
− | * added Dwarf4 support to CDT
| + | |
− | ** code submitted upstream for review
| + | |
− | * solved issue with indexer using data discovered from .debug_macro
| + | |
− | ** command line macros now discovered from modules compiled with -g3
| + | |
− | | + | |
− | === Oct 28, 2013 ===
| + | |
− | | + | |
− | * changed code to clean-up if an executable is specified
| + | |
− | ** running again with no executable specified will use the last launch
| + | |
− | * added support for specifying build console
| + | |
− | ** build console is parsed for flags and include path settings
| + | |
− | | + | |
− | === Nov 18, 2013 ===
| + | |
− | | + | |
− | * added progress dialog
| + | |
− | * added support for running via command-line script
| + | |
− | ** fixed program argument parsing
| + | |
− | ** figured out what minimally is needed to reuse repository
| + | |
− | * fixed some warnings and errors
| + | |
− | | + | |
− | === Dec 20, 2013 ===
| + | |
− | | + | |
− | * added gdbstandalone.zip to run from command line with Luna M4 CPP EPP
| + | |
− | * added default jar to use with Eclipse Luna M4 CPP EPP
| + | |
− | * completed GDBStandalone.product which contains icons
| + | |
− | * added check for invalid executable
| + | |
− | ** special dialog brought up to fix executable location and enter arguments
| + | |
− | * fixed NPE issue when running debugger 2nd time on same workspace
| + | |
− | | + | |
− | === Jan 15, 2014 ===
| + | |
− | | + | |
− | * added New Executable dialog off of File menu to allow specification of different executable to debug
| + | |
− | * added Help doc support, but no docs enabled as of yet
| + | |
− | * added Customize Perspective from Window menu to allow enablement of Reverse Debugging and C/C++ Tracepoint support
| + | |
− | | + | |
− | === Jan 17, 2014 ===
| + | |
− | | + | |
− | * added Help menu which contains Help Contents, Search, Dynamic Help, and About Eclipse items
| + | |
− | | + | |
− | === Feb 07, 2014 ===
| + | |
− | | + | |
− | * added User Guide which is transformed CDT guide
| + | |
− | * added mnemonics for menus
| + | |
− | * updated for Luna M5
| + | |
− | | + | |
− | === May 09, 2014 ===
| + | |
− | | + | |
− | * Standalone debugger is part of Luna M7
| + | |
− | * shipped with C/C++ EPP for Luna M7
| + | |
− | * includes installation script to install locally
| + | |
− | * includes core-file debugging support
| + | |
− | * includes attach to executable debugging support
| + | |