[wingide-users] wingide-users Digest, Vol 113, Issue 14

Wingware Support support at wingware.com
Fri Sep 27 13:28:16 MDT 2013

Christopher Fry wrote:
> This I the first time I've looked at a list of new features for Wing 5.
> It does not include what I consider to be the most important deficiencies of Wing4.
> First, programmers spend most of their time fixing bugs.
> I see NOTHING that directly affects debugging, and the stuf that's there appears
> to be to be barely helpful at all.

It's mostly a GUI rewrite which was an absolute necessity at this point 
in the life of the old GUI toolkit Wing 4 used.  One thing relevant to 
debugging (for some people) is that I/O from commands typed in the 
shells is asynchronous and thus gets to the IDE before the commands execute.

> In Eclipse, a lot of the "debugging" you have to do is debugging eclipse itself,
> ie whoops I accidentally dragged this pane over there and now I can't find
> the stepper controls and have no way to figure out how to get them back.
> So on the face of it, letting a user drag panes around is a bad idea.
> If a feature is in Eclipse, consider it a red flag as something NOT to implement.

Being able to drag tabs was our #1 most requested feature.  We can't 
ignore that and have tried to do a reasonable job with it.

> So what DO we need for debugging?
> -a better inspector: its very hard to see the details of certain objects,
>   esp App Engine model classes
> -  A way to invoke the inspector on results you get from entering in an expression
>     in the Python Shell/
> -  way to step though some code that I've started by typing in a call to the Python shell.

These were planned for Wing 5 and still are, but we haven't been able to 
work on them for 5.0.  This is because rewriting 350K lines of GUI code 
is hard and time consuming.  We had to focus on that and get it done.

> - A way to have a running app in the editor and be able  to type in an expression
>    into some python listener and see its results WITHOUT having to set a breakpoint.
>    I don't want to set a break point, I want to define a bunch of classes, methods
>    then call them. Don't make me artificially have to set a breakpoint somewhere,
>    then call some method I don't care about form my UI button click or whatever,
>    then get into debug probe and NOW I can type in my expression.
> -  AND let me INSPECT the result of that expression.

How would you determine the locals context to run within?  Or just use 
the global context?  Also, how would you deal with the inevitable 
threading/concurrency issues just injecting code randomly into a running 
app?  I realize that's not always going to be an issue but it sure will 
confuse some people.

> I consider the above more important than anything I see in your list of improvements.
> I told you all this a year ago and you said wait for version 5.
> Nothing in your list compels me to try version 5.
> I'm sure there's good stuff in there. You are smart people who do good work.
> But do you actually use Wingware to debug? If so, why haven't you
> observed the problems that I've articulated above?

Yes, we debug Wing with itself every day, all day long.  Almost 
everything I do, including writing new code, is in the debugger. I work 
almost exclusively in the Debug Probe, which I find a lot easier and 
faster to use than the graphical inspectors.  I do use the Watch tool 
fairly often, however.   I would also like recursive debugging from the 
shells, but to say Wing's debugger is useless without this seems a bit 
odd.  (Not sure that's what you're saying, but it sounds like it)

BTW, data extraction for a debugger in Python is a difficult problem.  
Objects can implement __str__, __repr__, __len__, property methods, etc 
and they can and often do horrible things when those are called.  We 
avoid it by default.  Does enabling the Debugger > Advanced > Resolve 
Properties preference help with App Engine model classes?

There's no expectation that every user will upgrade to 5.0.  We 
understand that people are going to upgrade when we offer them a 
compelling reason to do that, and the features that people care about 
vary greatly from individual to individual.  If that's not until 5.1 or 
6.0, that's just fine.

Thanks for the feedback!


Stephan Deibel
Wingware | Python IDE
Advancing Software Development


More information about the wingide-users mailing list