Sunday, February 22, 2009

Netbeans Python : just take a break

This time latest enhancements in netbeans python debugger are concerning breakpoints ; let's just take five minutes to describe them in details.

First the functionalities described here are available on Netbeans trunk starting with hudson build #1030

Breakpoints in python debugger were almost basically operational, but where missing extra goodies features which are usually expected to be operational in modern IDE language debuggers :

- Run to cursor.
- Step out
- Conditional breakpoints
- Break on hit counts.

Starting with build #1030 the above features are now available with some extras minor fixes also concerning breakpoints.

Usually the most practical way of setting a breakpoint in Python as in any other Netbeans supported language is by just left clicking on the gutter of the line where you want the breakpoint to be set.

then breakpoint is also visible in the breakpoint window as well:

contextual menus are available when right clicking either in the breakpoint gutter

or in the breakpoint window

The new feature here is now the capability of customizing breakpoints by selecting the breakpoint properties ; you can then customize the breakpoint and either set a condition or a hit count to the selected breakpoint if needed :

And finally the "run to cursor" and "step out" debugging actions have been implemented and are now available as well

Sunday, January 18, 2009

Bug fixing and improvements in python debugger

After the initial drop of the multithreaded version of the debugger a couple of weeks ago, my main activity had consisted in making internal improvements and fixing initial bugs.

The main problem with the debugger consists mainly in maintaining Python/Jython compatibility and checking with the different python versions . Jython is setting more critical sections in settrace that Python and avoid debugger's deadlock is sometime a real challenge ;=) with jython then.

As soon as I am confident enough with the debugger multithreaded foundations I'll then start the functional enhancements that will be more visible in the coming weeks.

It's also important to start keeping the level of bug low enough since we shortly will enter an intermediate beta drop of the 7.0 ... So chasing the easy to fix bugs has also been part of my activity last week.( IssueZilla 156502 and 156967 have been fixed during that period )

Since I am using Netbeans python for my own projects on a daily base, I feel frustrated not to have multiple file selections on File choosers in python projects and python platform panels ... Since that was also a very simple improvement I made that change as well which is available on 7.0 trunk from build #663

Saturday, January 03, 2009

JpyDbg Multithreaded Python debugger integrated in Nbpython

In August 2008 Allan Davis and Ted Leung got in touch with me and just asked if I was interested to integrate my previous JpyDbg python debugger work in nbpython project. At that time I felt that interest of Python in Netbeans community had increased and it was a good time to replace the old 'JpyDbg for netbeans' with a full support of Python in Netbeans IDE.

For sure I was enthusiastic ... So I joined the nbpython project at that time since I saw that with people like Allan, Ted and Tor Norbye and many other contributors Nbpython was starting in good shape to make Python become fully supported by the Netbeans IDE as other core languages like Java,C/C++ Php and Ruby. Those multiple language integration as core features make Netbeans becoming the IDE with the best language coverage in Core features now.

Having all languages supported as Core for an IDE is a killer feature compared to other IDE where Java and C/C++ are the only languages usually integrated as core features other languages being delivered as plugins becoming then second class citizens that may suffer quality and stability/compatibility problems as new version of the IDE are coming out.

Do not misunderstand : plugins are greatfor small or medium features inside an IDE ... But for big structural features like new language support, having a modular core integration is far better , more robust and easier to maintain closely with IDE life cycle

So I started this great venture by first providing a Quick and dirty integration of the old JpyDbg backend for the 6.5 python ea just in order for developpers to be able to play with a first version nbpython debugger in mid september 2008

Next I have been reworking the backend of the debugger to provide a robust multithreaded Python And Jython compliant backend debugger kernel 100% written in Python derived from the standard python native debugger Kernel.

This new reworked debugger version is now out by beginning of year 2009 on Netbeans 7.0 trunk starting with nbpython build #513

bellow is a screenshot a a Netbeans nbpython jython/swing debugging session running inside an Ubuntu box :

And I also decided that it was a good time to restart my bloging here in order to provide extra informations about new available features and infos around nbpython debugger ... So stay tuned ;=)

Sunday, October 29, 2006

JpyDbg 0.0.18 : Halloween's drop

Fall is a great season to drop the last release of JpyDbg for Netbeans and JEdit: I have been using this version since the end of the summer on a daily basis for my own Python development tracking reminding bugs in order to make it as stable as possible, and now it's time to drop those new features : on the netbeans side Editor integration has been improved and code folding is now available. On the JEdit side I have fully revisited and improved the Autocompletion feature that I will also make available for Netbeans in the 0.0.19 Version which should be out by the end of Spring 2007

Thursday, May 18, 2006

What's new in JpyDbg 0.0.17

The new version of jpydbg 0.0.17 is out for both Jedit and Netbeans , containing following enhancements :

- Netbeans standard debugging views are now used for Python debugging.
- Threading implemented.
- Detailed debugging views over python sequences and maps object.
- improving python debugging arguments panel access

Dropping a new stable version every 6 monthes is a reasonable time line plan that I will start to follow from now.

Saturday, January 07, 2006

JpyDbg V0.0.14 is out

I just dropped the V 0.0.14 of Jpydbg today which is can now be used both by JEDIT and NETBEANS users ... Of course There are still ongoing improvements with the NETBEANS implementation which I considered as beta, and my short term goal will be to improve it with the V 0.0.15 as a final clean and lean NETBEANS implementation.
I finally switched my priorities and decided to make the NETBEANS Version happen before the Python's profiler functionality .... Just because NETBEANS is a really cool IDE with tons of free availables plugins and a way to increase the number of NETBEANS users was to provide a free PYTHON language plugin for the platform.

My Plan for the next monthes will be :
- V0.0.15 : NETBEANS finalizations ( March 2006 )
Next I will start to provide new functionalities both for JEDIT and NETBEANS
- V0.0.16 : Python profiler integration + some minor enhancements ...( June 2006 )

Thursday, December 29, 2005

V 0.0.14 Jedit + Netbeans plugin soon

Here above a first preview screen shot Of netbeans jpydbg plugin before the V0.0.14 release coming soon.

The fall and winter period has been pretty busy spending night and weekends in order to be able to drop a compatible Netbeans / Jedit pluggin for the new year ... And here we are

I am now pretty on my way to do that ; I start to have a descent python netbeans nbm ... I mainly need to polish a little bit further in order to provide an acceptable as stable as possible beta version for Netbeans ... And to enhance the documentation as well in order to describe both environment suport now.

The Jedit pluggin is mainly a maintenance purpose drop ; I mainly spent time to provide compatible bridge code between Jedit and Netbeans interfaces. This task has been simplified a lot Since both IDE are Swing based ... And I have been able to reuse a lot of my debugger's components.