Discuss Opera Dragonfly, Opera's new developer tools.
By svdb0
Saturday, 1. August 2009, 18:01:29

How to make Dragonfly better than FireBug
I use Opera for all my browsing needs, and have done so ever since the first free (ad-supported) version was released. But when I have to debug some JavaScript, I (grudgingly) start up FireFox, because debugging with FireBug is so much more productive than with Dragonfly. But what makes it so much more productive are just a few basic features. By just adding those few features to DragonFly, it may not just catch up with FireBug, but it may imho even surpass it. These are the features concerned:
- To inspect a simple expression (eg. 'foo.bar[0]'), in FireBug you only have to hover over its last part. This is actually such a basic feature that I am still thinking that I may have missed something — what do the Dragonfly devs do when they want to inspect such an expression? The only possibilities which I have found are to copy the expression to the "command line" tab and execute it there, or to navigate the hierarchy of variables in the "inspection" tab (if the expression allows that). That is about 20x slower.
- In FireBug, you can add expressions to the inspection tab, so that you can quickly see the values of those expressions as you step through the code. In Dragonfly, you have no choice but to inspect the values of the expressions manually, which can take a lot of time if you are interested in multiple expressions. This is made even worse by the lack of feature 1.
That said, I am glad to see that Dragonfly is now much better than it was in the past. It now seems to be able to handle breakpoints in (functions called from) UI event handlers (though I may be wrong; I haven't used Dragonfly for so long that I forgot what the exact problem was). And DragonFly can now apparently deduce which runtime is relevant without my help.
BTW, didn't Dragonfly support conditional breakpoints at one time? I can't find it now.
By dstorey
Monday, 3. August 2009, 13:26:05

Thanks for the feedback,
We are still working hard on improving Opera Dragonfly as we move from Alpha to the 1.0 product. We will discuss your two features in the team and see if and when we can fit them in.
By svdb0
Monday, 3. August 2009, 14:43:55

Awesome. Considering the numerous suggestions which people make on these forums, I wasn't expecting this reaction.
If it's not too much trouble, I would be very interested in hearing the outcome of those discussions when they have taken place.
And since I seem to have your attention for the moment, I would like to mention conditional breakpoints as a third missing feature (which FireBug does have). It is by no means as essential as the two features I mentioned in my previous posting, but imho, it is something which any debugger should have before it can be called "complete". It can be a real time-saver when you are interested in the behavior of rare cases of some often-executed code. Though unlike those two other features, this shortcoming can easily be worked around, by placing an 'if (condition) { /* breakpoint here */ }' block in the code itself.
By dstorey
Monday, 3. August 2009, 15:18:17

I've discussed 1 and 2 above, and it is already a priority for the team once the current work is finished porting Opera Dragonfly to the new version of the Scope protocol which is coming in a Core release after Opera 10.
By svdb0
Monday, 3. August 2009, 15:49:46

Great. Thanks.
By a0flj0
Tuesday, 20. October 2009, 11:13:44

One more thing.
Did you ever try to debug a qooxdoo app with Dragonfly? (Home site: qooxdoo.org; it's a very nice RIA framework.)
Qooxdoo loads several dozens (maybe hundreds) of scripts, besides the ones you write, when developing RIAs. It is extremely hard to find _your_ scripts among the very many others, since there is no order in how qooxdoo loads the scripts, and there is no order in how dragonfly displays them. It would be nice to have the scripts ordered alphabetically in the drop down list box, and IMO it would be trivial to implement.
Searching by typing the first few characters of the script's name doesn't work - they all have either "Linked - " or "eval -" prepended, and when you reach the "-", the zoom function kicks in, instead of the search going on with the minus sign included. IMO, this is a bug.
Similarly, for a better navigation in source code, you could add a proper search function, like any reasonable text editor has: find in files. A la midnight commander and the like.
Can't wait for the new debugger.