Eclipse “Print Points”


I recently was struck by an idea while debugging. Why can’t I click in the code margin while debugging in Eclipse and add a “print point?” A print point would be kinda like a break point that doesn’t break. Instead it prints. You simply specify an expression that evaluates to a string which then gets printed on the Eclipse console each time the print point is reached as the program executes under the debugger.

Sounds like a great idea, right?

Wrong. This idea is apparently not open to immediate discussion in the Eclipse culture. The quick response from the Eclipse group was round rejection of the whole idea:

“This has been asked for many times before. You can easily do this now by adding a condition to the breakpoint that outputs text and returns false so it does not suspend execution.”

Although this is quite cool and a good thing to know (if you can remember how it works), I don’t really see this as the feature I requested at all. While it produces the same result, it does not have the same usability. In fact, if it’s so “easy” to do this in terms of the user experience, why has this “been asked for many times before?”


And although it also leaves Eclipse worse off than it might otherwise be, maybe we can all learn a little something from this:

Just because your DESIGN can do something doesn’t mean that your USERS can.

I leave you with a great TED talk from Timothy Prestero on the subject of design. While it’s not specifically about software design, everything he says applies at least doubly to software designers because we seem to be so much poorer at understanding the context that our designs will exist within than the average group of designers.

This entry was posted in Java. Bookmark the permalink.

3 Responses to Eclipse “Print Points”

  1. Tom says:

    Hm. It is a nice feature indeed, but I’m not sure I agree with your follow-up analysis. In your scenario the user has to click and enter a message that should be printed somewhere. In Eclipse’s scenario the user has to click and enter a message somewhere and make sure false is returned. I think that is pretty close. You could argue that a shortcut for these steps could be practical, and that is true, but overall I would agree with Eclipse’s that their solution seems fairly workable. After all that message needs to be typed somewhere, why not in de breakpoint window. Especially if the EDI is helping a bit to get the textfield visible. But I’ve not tried it yet, so maybe IRL it is not as optimal.

    One of the things I’d still like is “chaptering”; a way to visualizer “chapter” in a source file. Things like “constructors”, “properties”, and what ever is appropriate in the context like “stock allocation” for a purchase class. The IDE could then visualize each chapter as the scroll through the lines, so you can easily see where you’re at.

    • My point has nothing to do with simple ergonomics (how hard it is to accomplish the task), but rather “discoverability” (that there is no way in their UI to easily learn how to accomplish the effect). It doesn’t matter how easy it is to accomplish a task if the user can’t effortlessly discover how to do it. In my UI, you right click and see a menu item “Set PrintPoint…” This causes the user to think “Ah, what is a print point? Maybe I’ll click this and find out.” This causes them to discover the feature that users clearly cannot discover currently (as evidenced by the fact that people keep submitting feature requests for the feature that they are unable to discover). In general, discoverability is not just nice, but crucial (in both products and APIs). This is what is missing in their idea of how to do this.

      I like your “chaptering” idea.

  2. Eelco says:

    Both are cool ideas, and if you really wanted, you could probably implement it as plugins. The Eclipse plugin APIs are hard to get into, but you can pretty much customize anything you want with it. No, I’m not volunteering (don’t even use Eclipse anymore) 🙂

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s