Thursday, December 17, 2009

Xtext - how to start

Sometimes is better to have screwdriver than swiss knife. At least people from the are of DSL think that. Well, I have decided to follow this path. I need a screwdriver. In our world one of the options is to use Xtext. Xtext is a framework for development of textual domain specific languages (DSLs).

What does it mean?

You can build a grammar description and with the use of the framework get a:
  1. EMF model related to this grammar.
  2. Fully functional text editor.
  3. Scaffold for the generation tool

What for?

I need to record some data in structured form. I need model. Text editor is more convincing.
But this is only my motivation. There is a sea of use cases.

How to start ?

You can download Eclispe Modeling tools distribution from Eclipse downloads site. Or use update site.
Then you can follow Xtext documentation. And this is the reason for this post. Although, you don't need to spend weeks on learning Xtext principles to build usable tools, still there are some things missing from the documentation.
You have created project, you have written your grammar. Now is a generation step. Is build successful ? Not really. If you look at the console view, you can find why.
You are generating without ANTLR. It is highly recommended to download and use the plug-in 'de.itemis.xtext.antlr' using the update site http://download.itemis.com/updates/milestones
Of course solution is to download the plug-in. After that you can follow the getting started tutorial.
Code is generated and now is time for building your XPand templates to generate Java code from your model. How to do that? There is no "generate sth.." button in your target environment.
The simplest way is to import your xxx.generator plug-in project from source to target. You are almost done. The only thing left is to add required dependencies to imported project. It is also helpful to add XPand nature to this project. After that you can follow tutorial, build XPand templates, and generate Java code.
Hope this short note will help somebody to start the adventure with the screwdriver even smoother ;)
Next time I will show you how to change editor default coloring.

Thursday, November 26, 2009

Business and academic environment should go together!

You may not know this, but IBM Eclipse Support Center is a child of Poznań University of Technology and IBM. Both parties believe that science is valuable only when it is closely connected to the real business world.

This is quite difficult to achieve at quite abstract level of ogranizations. "We support universities", "We are close to business world", those statements looks great in PR, which does not implicate real usefulness. The science should be inspired by business, and the business should benefit from the science.

Poznan University of Technology managed to create quite good environment, where students can gain real experience, which is so important nowadays. Rules of cooperation are quite simple:
  • A company proposes a project, which cannot be mission-critical.

  • 6 students (4 developers, PM, Architect-Analytic) realize it as a bachelor thesis. This phase takes about 4-5 months.

  • Everybody is happy, everybody gets something valueable. Students participate in real projects, talk with real customers, while companies have their projects made for free.


We'd like to help those students, give them Eclipse know-how, which will make them really productive. Because of that reason we decided to held FREE Eclipse course for students. Check the presentation for details:



If you think that the cooperation between universities and commercial worlds is an absolute must, and you have ideas for which you do not have resources, please contact us contact us.
Even if you have ideas about Eclipse itself, if you think there is something that can be improved by those students, some new feature implemented, do not hesitate!

Friday, November 20, 2009

Eclipse Demo Camp in Poznań

This year Eclipse DemoCamp will be hosted at Poznan University of Technology.

Please refer to details .

Check out our special guest!

Tuesday, November 3, 2009

Small but usefull enhancements to StyledText

The biggest problem with line indenting in StyledText was that only the first line was indented when word wrapping was enabled.
But right now this issue has been fixed by Felipe Heidrich.
See the snippet:
Can you see the difference between first and second paragraph? I think it will address many many issues that you had with text indentation.

The most important new API method is:

StyledText#setLineWrapIndent(int, int, int)


The patch was released into Eclipse 3.6 M4 stream, so you need to checkout SWT from HEAD to utilize this awesome functionality.

Regards,
Chris

Monday, November 2, 2009

Helios Staging Repository

If you work with Eclipse 3.6 dev stream and you need to install various additional tools/frameworks (like Mylyn, EMF or WTP) and you are fed up with googling for particular update sites you can use Helios Staging Repository (http://download.eclipse.org/releases/staging).

Well, it allowed my to set up my new shiny M3 in 10 minutes.

Wednesday, October 28, 2009

Eclipse e4 - getting started - dependency injection reading

Eclipse e4 right now is almost the synonym of the word "future".

If you look for an excellent presentation that will bring you into the future, you can find it here (made by Tom Schindl).

Reading JSR 330 is also a good idea, because it will give you the basic understanding of Dependency Injection.

The last, but not least, is looking at org.eclipse.e4.core.services.context.IEclipseContext javadoc, and then, in the end, at org.eclipse.e4.workbench.ui.internal.Workbench.

All those readings will give you fair understanding of how dependency injection is used in e4.

Monday, October 19, 2009

A word or two on status handling

This summer was extremly hot in Eclipse Support Center, but right now I have a little bit more time for Eclipse code writing.

During those busy weeks I have seen a couple of times posts about logging, extended logging and other logging facilities, which are really great for headless applications, err, for OSGI applications.
But they all cannot be used to provide top-notch customer experience in business apps, because in general logs inform experienced users that something went wrong, but they will not help them in solving the issue.

UI is quite happy, because all plug-ins that have user interface based on org.eclipse.ui.workbench may use StatusHandler#handle(IStatus, int) to report an issue and inform the user in consistent manner. But it is quite difficult to add custom actions to such an error report (f.e. 'Refresh' or 'Restart') although those kind of improvements are requested again and again for various problems (OutOfMemoryException, NoMoreHandles).

Some people dream about automated Eclipse error reports, while other would like to have more control over displayed message (but they do not fill bugs ;-) ). The problem is also that non-UI plug-ins also report problems, and those problems should not be only logged, especially if a user can do something meaningful.

I have spent some time on investigating those issues, and here is my demo(excuse poor screencast quality, it simply took to much space, so I compressed it, a version with slightly better quality is here), which shows what I have in mind: small service, which allows for registering customer status handling services, so you can decorate, handle, modify or add user hints before the status and error dialog is finally presented to the user.








This is not a part of work in progress, so until there is a huge interests please do not expect this code to appear in the platform. But you can help me decide if I should push this to Eclipse.


Best Regards,
Chris
Rational Eclipse TSE

Tuesday, September 8, 2009

We have official website :D

Finally, after almost 3 years you can read a little bit more about us:

CNF goes to RAP


As we started new project at the university the decision was to check if RAP can be used as web presentation layer. Yup, we'll try but there are some features missing.
The biggest component we need in our system is Navigator (with pluggable content providers). But guess what ;) we have it in Eclipse == CNF. Unfortunately it doesn't work on RAP yet.
Oh, well since yesterday there is some progress ;). If you're interested there is a enhancement request opened for this issue. There you can find modified CNF plug-in and usage example. Runs on RAP 1.3.0.

Thursday, August 20, 2009

Preferences Nightmare

Business Eclipse adopters quite common request for headless preferences import/export. Eclipse preferences has one big disadvantage - they are exported if and only if they have been changed. So if you and your friend have some compiler settings, and you would like to import his preferences, it is impossible, because both preferences set will be merged. There is also a request to reset all existing preferences prior to import.

We, as Eclipse support, have tried to deliver solutions to those problems. But we failed because of something rather unexpected:


There is too much freedom in preferences allowed.

Developer tends to:
  • Cache preference node. This results in beautiful java.lang.IllegalStateException: Preference node "org.eclipse.core.XYZ" has been removed.
  • assume that nobody else will modify those preferences and there is no need to listen for changes.
  • assume that preferences can be changed only by preferences dialog and put some business logic into IPreferencePage#performOK().
And what about you? Can your preferences be exported and imported and changed via 3rd party? Or is it necessary to dig through your code innards to find what you call in performOK?

Is it so difficult to choose the right way?

Best regards,
Chris

Monday, August 17, 2009

Headless nightmare

It is considered as a proper design to separate *.core from UI. Such code is flexible and very easy to maintain. And exposes important functionalities to others, so they can adopt it and create amazing tool.

But have you ever thought what will happen if your code will be used by headless client? In Eclipse support it is quite common case - someone create a scripts which creates workspace, sets up preferenfes, runs validation, builds jars and deploys them somewhere. It's only a couple of minutes to write that kind of script. Extending Eclipse requires a little bit more time, but it is possible to f.e. start server from ant script!.

Great!

But headless ant is also very quick route to headless hell. Ant application is not aware that there is no UI. Other plug-ins also seem to ignore that fact. Various dialog try to appear and break the build (there is no workbench!). There is actually ant application which creates workbench, but is it really headless script then, when user has to sit and answer when prompted?

And what about you, dear Eclipse developer?
Do your *.core components work in headless mode? Are they protected against failed extension point initialization?

I do not have even idea how to solve this issue correctly. I do not even know what should I request from bugzilla. Should each Eclipse application has own bundle set? Should Equinox allow for UI/non-UI/more general plugin division? Each architecture change will require a lot of work in many plug-ins (some plug-in cannot be easily decoupled, because f.e. *.core exposes extension point which needs to be contributed by one (and only one) extension (which is currently UI dialog)).

Now something related to my previous post:
  • 10% of readers was able to find the route couse in less than 10 seconds (I thought it is impossible).
  • 60% needed more than 10 seconds, but less than 1 minute.
  • 10% of readers finished before stopwatch shown 2 minutes.
  • 7% was able to complete the quest in 5 minutes,
  • 7% asked for more time.
Chuck Norris also completed the survey. He was contacted by the code which asked for fix (-1 sec).

You all are in quite good shape :-).

Regards,
Chris

Monday, July 13, 2009

Look at the code and find NPE

NPE at IconAndMessageDialog.getSWTImage(). No line number.
How much time do you need to figure out what's wrong?

This bugzilla entry contains spoiler (comment 6, and solution, comment 10).

The challenge code is:

private Image getSWTImage(final int imageID) {
Shell shell = getShell();
final Display display;
if (shell == null || shell.isDisposed()) {
shell = getParentShell();
}
if (shell == null || shell.isDisposed()) {
display = Display.getCurrent();
} else {
display = shell.getDisplay();
}

final Image[] image = new Image[1];
display.syncExec(new Runnable() {
public void run() {
image[0] = display.getSystemImage(imageID);
}
});

return image[0];

}



BTW. Does anybody knows good plug-in to export html code?

Monday, July 6, 2009

Is this under EPL?

Thursday, June 25, 2009

Why Support don't like NOT_ECLIPSE

Yes, those are usually the most difficult cases to solve. NOT_ECLIPSE.
Recently two bugs has been opened, which consumed significant amount of our time:

Bug 103301 - [Webapp] Search highlighting hangs for awhile on some pages in Internet Explorer
The title of bug clearly indicates that it is not Eclipse issue. Opera, Firefox and Chrome work fine, only IE displays information that the script is long running and whether you want to cancel it. This issue is almost impossible to reproduce without knowing search query and specifically structured help page.
This bug has been workarounded by adding timeout to the script when running on IE.

Bug 279440 - Invalid warnings when using windows offline synchronization
Maybe not all of you know, but Windows allows for accessing files from network drive even if you are offline. Those files are just kept somewhere in the cache and synchronized when possible. Now if you try to keep your project on such a network drive, can you imagine that Eclipse prompts you that your file has been modified by external tool after every save? More, if you try to reload the file, you may lost your changes. The issue is caused by the fact that Windows needs a lot of time to notice that file has been changed and to update a timestamp. So if you write anything to a file, then read its timestamp, and read it after some time, they will be different. This could not be fixed :-(.

BTW. Recently we had Galileo Demo Camp, please expect some news today.

Wednesday, June 24, 2009

Word wrapping in text editor

This is quite long standing bug and it has 110 votes.

It is the 3rd bug most demanded by the community.

It has more than 110 comments.

If the issue is so important why there is no single patch contribution?

A Conspiracy Theory

This post is my private opinion.

Bjorn Freeman Benson left his position on Eclipse Foundation.

Steve Northover has left both IBM & Eclipse. If you look closer at his new company "Bedarra Research Lab" you will notice that it is owned by dr. Brian Barry, the dr. Brian Barry who leaded OTI when it created VisualAges and Eclipse(!).
BRL states on their webpage:
We have opted for a private model so that BRL can take an aggressive entrepreneurial approach to research projects, without the time consuming approval cycles, intellectual property constraints and overhead of conventional R&D labs.


If two great people leave (more or less) Eclipse and in both cases we can see some kind of protest against "conservative" rules... it is time to discuss.

Is Eclipse agile enough to survive?

Or is it just my paranoia?

Wednesday, June 17, 2009

Eclipse Summer School is coming!

We are proud to announce that this year we will also organize Eclipse Summer School (it is the 4th one).

Eclipse Summer School is initiative of Poznan University of Technology and IBM. We are spreading Eclipse knowledge among students (for almost free), but also commercial companies may participate.

The training is in Polish, but if you would like to review our agenda please look at google translated one.

History and photos can be found here.

This is such a big fun to see how people change their attitude to Eclipse!

Saturday, June 13, 2009

Blog reading saturday, and what's up in Eclipse Support

Rainy morning here. Thru Ian blog I just came accross his University Lab blog and found myself thinking how simple ideas are still so fresh in different contexts. Think corporate blogs - exist, companies blogs - exist, communities blogs - exist, political parties - some do. But University having a blog? Last week, partying with my team, we've thrown the same idea worthless. Universities, at least where I live, are fed by publications and citations counts - so why should they bother about blogs?

Kuba, from my team, wasn't there last time, but he actually works on PhD, so I just asked him why don't our Univ still have blog? Actually it turns out, things are in progress(!). So some day I might be able to learn what's on my friendly Software Engineering experts minds :-) Well having a blog might actually be helpful, because researchers are always struggling to get their way to companies, to work on real cases. However they might not see that from business people perspective, they're no easier to find too. Single blog is not a cure for all the communication problems, but looking at yourself when you don't understand how to reach others might be helpful.

Ok, so now I see my blog. How dusty here. So what cool actually happend in IBM Eclipse Support center recently?? I'll write about two things.

I'm co-mentoring one of Google Summer of Code projects, namely OSGi Monitoring. Our student Wojtek is working on getting PDE Plug-in registry view able to get some insight of self-hosted Eclipse instance, remote Eclipse instance or maybe even non-Equinox one. It's a UI version of -console. So far he went over various communication layer implementations - socket connection, ECF, R-OSGI (thanks Scott!), JMX. After he passes his exams, I hope to finally see we start, stop, install and inspect all my Eclipse instances from the machine next to me!

The other thing I wanted to write about is not that promising. Since January or Feb, we were having a customer with really bad issue. He works with several Eclipse-based IBM products but for some reason his editors are slow as hell. But what's the problem we asked; what's slow, how do you see it? He uses Eclipse text editor, JDT Java editor, and various other editors to write his scripts in a multiuser environment based on Windows network shared drives. Shared drive and text editor? You sense the catch. He must be hitting some network delays! To spice things up, issue happens only in very specific setup, different product teams suspect that the other product is failing and any kind of remote assistance is hardly possible due to security and network reasons. And finally, how to find the reason for 1-2 sec. freezes that happen only when making mouse clicks? Here Eclipse support team kicked in! The Java coredumps would help - they cleanly show what's going on in the threads. Going that path we wrote a small plug-in that drops core dumps on any hangs in Display thread. And that was the hit. It turned out a couple of plug-ins had poor selection change listeners implementations. They were making calls like java.io.File.exists() - you woudn't normally see anything wrong with that. But if the file is on shared drive a couple of calls like that easily take 1sec. - just enough to turn any excellent editor to crap! And that was it - few different components did the same fault with calling java.io APIs on selection change. Now they're working on fixing that. I hope your selection listeners don't have that bug :-)

Tuesday, May 26, 2009

No Ribbon in SWT

For those of you who had hope to see Ribbon in SWT:

"[...] project was denied due to IP not passing (due to Microsoft
clauses)".

Friday, March 27, 2009

How to update Eclipse plug-in in P2 world?

Well, before p2 it was pretty easy - one just had to drop updated plug-in into eclipse\plugins directory, and after restart (using -clean) updated plug-in was immediately there. Excelent for testing. Of course what you dropped manually, was then not possible to uninstall using Update Manager.

With p2 there's a few more steps required. If you can't make a feature update (which would be perfect solution), you need a feature patch, that will tell p2 that some plug-ins need an update. It's pretty easy with PDE Create Feature Patch wizard - only two things to take care about:
1. Make sure you know, which feature originally contributes a plug-in that you want to update.
This information can be found in Help>About Eclipse>Feature Details and by pressing "Plug-in details" at the bottom of the window.

2. Be careful with setting the host feature version.
Make sure that host feature version is general enough to work for all your clients. For example, setting version to 4.4.2.v123 won't work for users with feature 4.4.2.v125. Altough feature patch will install without single warning, plug-ins will not be updated. Setting 4.4 instead will work for both 4.4.2.v123 and 4.4.2.v123 as well as any other 4.4.x.x versions.

Does anyone know if feature patches support version ranges?

Bonus: now user can easily install/uninstall the update in p2 UI without messing with files. Yuppi!

Couple more questions: what happens if there's more than one patch for a single feature? What if after applying a patch, feature is updated to version that still matches the patch?

ps. for those who know I don't read Eclipse tips - yes this is Eclipse tip, but while I do at least 1 patch per month, figuring out everything from scratch gets boring after some time :-P

Thursday, March 12, 2009

Do I want too much?

Ubuntu 9.04 turned out to be a proof of concept. Some kind of joke that should not be called OS. Sorry.

Will they finish it before April? Yes.
Will Ubuntu be something that I'd like to use further? I doubt.

Saying that something is finished does not mean that it is really complete. It means that there is no more time left. So Ubuntu 9.04 will be released even if it will be considerably slower than Idle Ibex.

I know exactly what is new in particular Eclipse release, but to gain this knowledge I do need to read new and noteworthy. I do work in Eclipse support.

API is finished when there is no more time left, too. What are the consequences? A lot of compatibility layers. Tons of compatibility code. More API, because we have to maintain old code.

I believe that current division into API and internal code is not sufficient. We need the third kind - the provisional API. But it should be supported by process, not just by commens in the internal code.

Turning provisional API into the real one should not require any refactoring. Provisional API should turn into the real one when it remains unchanged for one Eclipse release and no further work on this is planned (making bug as helpwanted *counts*).

The justification is quite simple - code is adopted after the release, and then no changes can be made. I do not believe that any self-respecting architect is using Eclipse 3.5 for serious development (and replaces necessary libraries every 6 weeks).

So, Eclipse 3.4 is a base for 3.5, and 3.5 feedback will be used for 3.6... But if something is wrong in 3.5 and was not discovered yet there is no chances to remove it. Real adoption of Galileo will show its shortcomings. Some of them will live forever. For sure.

Many people contribute to Eclipse. Would you be able to withdraw the result of your employee 1 year work? Would you?

Eclipse is built from contributions. You cannot require contributors and commiters to be more loyal to Eclipse than for their employees.

But you should do everything what possible to guarantee Eclipse quality and do not allow for becoming yet another "proof of concept".

Regards,
Chris

Eclipse Debugger, part VIII

While everyone is waiting for Eclipse 3.5 M6 let's have a look at one of nice features introduces to the debug area in M5 - breadcrumb for the Debug View. Breadcrumb gets activated when Debug view is too small to display its content in the normal way:


Try it out and check how it can help you in your daily debugging.

Tuesday, February 24, 2009

Eclipse Debugger, part VII

Today I have discovered very nice feature of Eclipse Debugger - it is possible to get rid of the "Source not found" message while debugging. One obvious solution is to add the source to the code that we want to debug, but there are times when we don't have access to the sources of some libraries. In this situation we can use Step Filtering preference:

Now, when we invoke Step Into on a code which is included in this preference it will be treated as Step Over - we won't see the "Source not found" message any more.

Tuesday, January 27, 2009

Eclipse Debugger, part VI

Recently I've told you about the Expressions view, which allows one to view the values of different expressions. There is also another view, called Display, which can do similar things, but works in a little bit different way.
The Display view is not opened by default in the Debug perspective, so to open it go to Window->Show View->Other->Debug->Display. The UI of this view is rather simple, but it can be very useful, it gives you the possibility to:
  • evaluate any expression and display its value
  • execute given expression
  • create a watch expression
How does it work? Just write any valid expression in the Display view (you can use Content Assist) and run actions from the view's toolbar.
The view can be used as a kind of scrapbook, where you can easily enter some elements of code and experiment a little bit while debugging.

Friday, January 23, 2009

How to embed GMF into a multipage editor?

Today I have been looking through our blog archive and I have found a draf of a post about embedding GMF into a mulitpage editor. I was very surprised as the post was completed, so I wonder why I hadn't published it back then.
So here it is without any changes (better late then never):

Recently I had to find a way to embed GMF into a multipage editor. I had the experience with GMF, but I didn't know how to create a multipage editor, however, it went pretty easy and straightforward. For this short tutorial I will use the multipage editor example described here and the GMF MindMap example (you can check out the source code from the CVS). What we want to achieve it to embed the GMF editor into the first page of the exemplary multipage editor. If you follow the steps below you should get the desired result.
  • In org.eclipse.ui.examples.multipageeditor project find MultiPageEditorExample class and copy it to the org.eclipse.gmf.examples.mindmap.diagram.part package of org.eclipse.gmf.examples.mindmap.diagram project. There will be some error, but we will take care of them later on.
  • In MultiPageEditorExample you will find field private TextEditor editor; change it's type to MindmapDiagramEditor which is the class of GMF editor. Also in the method MultiPageEditorExample#createPage0 change the constructor call for the field editor.
  • Let's look now at the errors - they are mostly connected to MessageUtil class, which we simply don't have in our GMF project, however, we need some strings to pass them to the methods - we can put there any string we find appropriate (and later of course we can externalise those strings).
  • Now there should be only one error left. To get rid of it we can just comment out the method MultiPageEditorExample#sortWords and every call of this method.
  • For this moment we shouldn't see any errors in out diagram project. Now we have to change the editor class that is defined in the plugin.xml of org.eclipse.gmf.examples.mindmap.diagram project. Open the file, go to the Extensions tab, go to org.eclipse.ui.editors and there you should find one entry with the editor definition. Change the class attribute to point to our multipage editor (class MultiPageEditorExample).
  • Here it is! You should see the editor semillar to the one on the screenshot below:
    I know that this is the dirty way, but if you need to do this fast, or you don't know how to start then I guess this can be a good starting point.

Tuesday, January 20, 2009

Eclipse Debugger, part V

The third view that is extremely important for me while debugging is the Expressions view. This view allows to monitor the value of (as the name says) any expressions.

How to add expressions?
Just select the expression in the Java editor while debugging and choose Watch option from the context menu. The expression will immediately appear in the Expressions view.
You can also right click in the Expressions view and choose Add Watch Expression... option.

How to edit expressions?
If you have already some expressions added you can easily edit them by right clicking on the expression and choosing Edit Watch Expression.
What is important is that you can put any expression in this view - not only the ones that are in the code - if you want to check some hypothetical value then you can do that!

The are also some other interesting options in the context menu:
  • you can copy expressions to the clipboard
  • you can remove expressions
  • you can look for expressions
  • you can enable/disable expressions
  • you can reevaluate expressions

In the view's toolbar you will find options to:
  • show type names - shows the type names of the evaluated expressions
  • show logical structures - while browsing the evaluated value of the expression you can look at its logical structure. e.g. instead of looking into the internals of the Map object:

    you can see the logical structure of the map:



  • create new watch expression (the 3rd way to do this)
  • remove/remove all expressions from the view
Like in the Variables view, here you can also find interesting possibilities to:
  • change the layout
  • show constants
  • show static variables
  • show qualified names
  • show null array entries
  • show references
This view can be really helpful, especially when you want to see how the values of particular expression change while debugging the code.

Tuesday, January 13, 2009

Eclipse Debugger, part IV

As I said in the previous part this time I will focus on the Variables view, which helps us preview the values of variables during the process of debugging.

The view itself is rather straightfoward, however, I'm not sure if everyone knows about the options available in the view's menu like:
  • changing the layout of the view - e.g. the view can be turned into the horizontal orientation or you can change the displayed columns
  • for java debugging you can turn on/of showing:
    • constants
    • static variables
    • qualified names
    • null array entries
    • referneces (I have already written about this: point 3) in this post)
I thing it is good to go through all this options and see how they work as some of them can be extremely useful while debugging.

One more thing worth mentioning is the possinility to change the details formatter. Look here if you want more details.

Looking for your comments!

P.S. Look to the comments for information about Logical Structures available in the Variables view. Thanks Curtis for this!

Wednesday, January 7, 2009

OSGi Services in PDE Registry!

Starting with today's Eclipse build you can finally control OSGi services running inside Eclipse. Simply go to your favourite Plug-in registry view and Group view contents by Services.



Having done that, you should see all running services in one place, ordered by their names, with their properties and list of bundles using each service instance.



Using view filter it's now pretty easy to search for particular service or explore interfaces provided by different bundles.

The next step is to see the details of launched self-hosted Eclipse or OSGi instance.

Monday, January 5, 2009

Eclipse Debugger, part III

Let's continue our tour through the features of the Eclipse debugger. In the last parts (Part I, Part II) I was writing mostly about breakpoints and this time won't be any different. When we look at the views provided by the debugger we will find

the Breakpoints view.


The main purpose of this view is to manage the breakpoints - it allows to easily (going from left to right through the buttons on the view's toolbar):
  • remove selected breakpoints - I guess it's self explaining
  • remove all breakpoints - I guess it's self explaining
  • show breakpoints supported by selected target - when you debug different kind of artifacts (code in java or C or ant build script) you can make the Breakpoints view show only the breakpoints that are supported by this type of the given artifact [Thanks Jacek for helping with figuring this out!]
  • go to the file for breakpoint - it will show the place where the breakpoint is set in the editor
  • skip all breakpoints - when you don't want any breakpoint to be active check this option
  • add java exception breakpoint - I was writing about this in the first part
More cool features can be found in the view's menu, you can:
  • group the breakpoint by many criteria, e.g. type, project, files, etc.
  • define breakpoints working set
  • check the option to show qualified names in the view
The view allows you also to change the breakpoints' properties directly from the context menu - just right click on any breakpoint and you would see the options to:
  • change the hit count value
  • make the breakpoint suspend the VM or suspend the thread
To finish the breakpoints story it has to be said that breakpoint can be imported and exported - you can open the appropriate wizards from the Breakpoints menu or from the File->Export->Run/Debug->Breakpoints option.

Is there anything I have missed about breakpoints? Please, share!

That's it for this week - next time I will focus on the Variables view, which is essential for efficient debugging.