Slicer3::Eclipse

From Slicer Wiki
Revision as of 17:42, 15 September 2010 by Belhachemi (talk | contribs) (Content moved from http://www.slicer.org/slicerWiki/index.php/Slicer3::Debugging_with_Eclipse_Instructions)
Jump to: navigation, search
Home < Slicer3::Eclipse

Howto Setup Eclipse – Slicer3 Development Environment:

First download your Eclipse version (e.g. from http://eclipse.org/downloads/ )

This description is based on Eclipse Helios:

eclipse-cpp-helios-linux-gtk.tar.gz


After checking out the sources and building 3D Slicer

CASE: the classic way (Slicer 3.6)

svn co http://svn.slicer.org/Slicer3/branches/Slicer-3-6 Slicer3
./Slicer3/Scripts/getbuildtest.tcl

you will find 3 folders in your directory

Slicer3          (3D Slicer source)
Slicer3-lib      (Dependencies source+binary)
Slicer3-build    (3D Slicer binary)

Go to the 3D Slicer binary directory and generate your eclipse project files

cd Slicer3-build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../Slicer3


CASE: using Superbuild (Slicer 4.0)

svn co http://svn.slicer.org/Slicer3/trunk Slicer3
cd Slicer3-SuperBuild
cmake -DSlicer3_USE_KWWIDGETS:BOOL=OFF -DSlicer3_USE_PYTHON:BOOL=OFF -DSlicer3_USE_QT:BOOL=ON -DSlicer3_USE_PYTHONQT:BOOL=OFF ../Slicer3/SuperBuild
make
cd ..

You will find 2+1 folders in your directory

Slicer3                             (3D Slicer source)
Slicer3-SuperBuild                  (Dependencies source+binary)
Slicer3-SuperBuild/Slicer3-build    (3D Slicer binary)

Go to the 3D Slicer binary directory and generate your eclipse project files

cd Slicer3-SuperBuild/Slicer3-build
cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../../Slicer3



You will get 2 files

Slicer3-build/.project
Slicer3-build/.cproject

Import the created project file into Eclipse

  1. Import project using Menu File->Import
  2. Select General->Existing projects into workspace:
  3. Browse where your build tree is and select the root build tree directory. Keep "Copy projects into workspace" unchecked.
  4. Click "Finish"

You get a fully functional eclipse project


Add a -j<cores> to your make command (Properties->C/C++MakeProject)

Debugging with Eclipse Instructions

There are a few key things about interactive debugging under Eclipse that once are done right, then it just works:

  1. build Slicer totally first the normal way, either with cmake or getbuildtest.tcl.
  2. Create the project in Eclipse by referring to the makefile and entering an external make command line

Instructions for the build steps can be found at http://www.slicer.org/slicerWiki/index.php/Slicer3::New_Eclipse_Instructions

Assuming that Slicer is building under Eclipse, we'll take off from this point on:

Understanding Slicer's startup process

The executable xxxx/Slicer3-build/Slicer3 is not the real program, instead it is just a "launcher". This executable sets up a bunch of paths and environment variables, then launches the real executable. The "real" Slicer3 program is stored in: xxxx/Slicer3-build/bin/Slicer3-real. So when we are asking Eclipse to run Slicer under the debugger, we really want Eclipse to startup and attach to an instance of "Slicer3-real".

Step 1: There is a script in xxx/Slicer3-build/bin/Slicer3SetupPaths.sh or Slicer3SetupPaths.csh which sets up the same paths as the launcher. If we run this script in a shell window (on Mac or Linux), then run eclipse from the same shell, we will have the environment defined. This is how to try it the first few times, but there is a cleaner way we will try after we know debugging is working. So if you are on either a Mac or Linux, open a shell and source this setup script, please.

Then in the same shell, start eclipse. It will be something like this:

  1. % source /usr/local/slicers/trunk/Slicer3-build/bin/Slicer3SetupPaths.sh
  2. % ~/Desktop/eclipse/eclipse &

Step 2: Then in the Eclipse window, open the Project/Properties by right-clicking on the Project Explorer entry for your Slicer build. Then select the "Run/Debug Settings" entry. We want to set the executable to point to "Slicer3-real" instead of "Slicer3". This plus running the script in the shell Eclipse was started from *may* be enough to get the debugger started on Slicer.

If you are using a Mac, shared library loading can be slow and gdb can timeout during Slicer's loading process. I have not had this problem on Linux and can't comment on Windows since I have not tried it in under Windows. It was helpful on Mac under Leopard and Snow Leopard to increase the default timeout allowed by Eclipse if your Mac needs a bit more time to get everything initialized when first beginning a debugging session.

Note to Snow Leopard users

In the Summer of 2010, we found moving to Snow Leopard caused debugging to stop working. The newest (nightly build) of Eclipse was needed to get breakpoints to actually force the program to stop again. Debugging worked without tweaking Eclipse for systems running Tiger and Leopard. However, the 64-bit only mode of Snow Leopard meant a 64-bit Eclipse is needed for debugging. It is expected that these issues will be resolved in the release version of Eclipse 3.6 (Helios). Do remember that debugging only works using a 64-bit version of Eclipse on Snow Leopard (because the build is now a 64-bit build.)


Old description from 2008

PreRequirements for compiling Slicer3:

  1. CMake (2.4.1 or later)
  2. Tcl/Tk (8.4 or later)
  3. incrTcl (3.2.1)
  4. VTK 5.0
  5. ITK 2.8
  6. KWWidgets CVS head

Installing Eclipse:

I installed Eclipse 3.3 M4, but this should also be applicable with Eclipse Versions under this. Download Eclipse from www.eclipse.org and unpack the downloaded archive to the destination you want. You start Eclipse with ./eclipse from the base directory of your eclipse installation.

Configure Eclipse:

To get Eclipse handling these big source packages in a good manner it is good to tweak a little the properties of the eclipse startup. First it is very advisable to use Eclipse with JRE 1.5. Download it from [1] and put it in your project folder (or elsewhere). In addition I increased the size of the memory Java can use with the lower bound switch -Xms and the upper bound -Xmx.

So my Eclispe command looks like this: ./eclipse -Xms64m – Xmx512m -vm /<path to your jre base-directory>/bin/java

Because sun only offers a java JRE for AMDX64 and not for Xeon CPU's it is also possible to use the JRE from BEA jorckit. 
This should be faster but also a little less stable (I didn't feel that something was unstable!)

Modules for Eclipse you need:

Before integrate the source-code into Eclipse we need two separate modules.

  1. CDT – C++ Environment: http://www.eclipse.org/cdt/downloads.php
  2. SubClipse: http://subclipse.tigris.org/install.html
I use right now CDT 4.0 - nightly build which is much more feature rich then 3.1. 
On the other Hand this is still under development and though not stable in any situation.
  • To install these Modules, start Eclipse and go to Help->Software Updates->Find And Install

Eclipse-Step1.png

  • Click on “Search for new features to install” and then on “Next”:

Eclipse-Step2.png

  • Now click the “New Remote Site...” Button and insert the appropriate informations in the input fields.
  • For CDT this should look like this:

Eclipse-Step3.png

  • For SubClipse:

Eclipse-Step4.png After adding these to module Site just click on the “Next” Button and Install both items.

You will be prompt to restart Eclipse. After the restart you're ready to get the sources into Eclipse.

Creating Project and getting the Source-Code for it:

Now that you have setup eclipse we can focus an getting the code and compile it. One of the disadvantages of eclipse is the inability to use Cmake and CmakeLists.txt files directly. So some manual configuration is still necessary. But hopefully the Eclipse on Linux Project will close this gap in the future. Go to the na-mic.org Slicer3-Development website and create for each listed application a new project in Eclipse. For CVS based projects create a new CVS-Checkout-Project and for SVN the SVN counterpart. Then to checkout the source select the branch or the head sources and create a “Standard C++ Makefile Project”. (right now it is recommend to use for tcl and tk the 8.4 branch, because till now VTK, KWWidgets and ITK are not modified to match tcl/tk 8.5) Configure all projects in the sequence as stated above. All projects besides Cmake, VTK, ITK, KWWidgets and Slicer3 itself are autoconf/ configure based application. For tcl/tk it is necessary to change the default source path to unix.

  • Right-Click on the project folder
  • click on properties (or just press Alt+Enter)

Eclipse-Step5.png

  • then at C/C++ Make Project

Eclipse-Step6.png

  • click on “Workspace...”
  • select the unix folder from tcl or tk

Eclipse-Step7.png

Compile the projects:

After successfully configuring all projects eclipse should start automatically building the application. If this is not the case, right click on project and select “Build Project” and see how the project is compiling.

Download

How to Setup Eclipse – Slicer3 Development Environment