[PATCH] Re: Bug 68015: Variables/Watch Window closes on first view

Richard Dale Richard_Dale at tipitina.demon.co.uk
Mon Jun 6 20:27:06 UTC 2005


On Monday 06 June 2005 16:59, Vladimir Prus wrote:
> On Monday 06 June 2005 17:31, Richard Dale wrote:
> > > Looking at your code, it looks like it still has the same problem. If I
> > > open a thread in framestackview, the selectFrame signal is emitted, and
> > > rdbcontroller end up emitting showStepInSource -- which is exactly what
> > > I'm trying to avoid. Did I miss something?
> >
> > You say ' Looking at your code', but I can't remember any problem with
> > this specific issue. Can you try it out in practice and see if there is a
> > problem?
>
> Ok, I've found 'ruby' installed here and tried the debugger with this
> program:
>
> threads = []
> 6.times { |i|
>   threads << Thread.new(i) {
>     raise "Boom!" if i == 3
>     puts i
>   }
> }
> threads.each {|t| t.join }
>
> I set breakpoint on the "raise" line and run it. The framestack widget
> shows some threads, one is opened and others are closed. When I click on a
> "+" near closed thread, the framestack windows disappears and the first
> frame of the selected thread appears to be selected. That's behaviour my
> patch is trying to fix for C++ debugger.
Ok - interesting! But welcome to ruby, even if it's only to help with 
improving C++ support..

I spent about 3 months on the ruby debugger - 1 month adding ruby support, 1 
month fixing problems with the debugger logic and another month improving the 
introspection of the ruby bindings. It seemed to me that jbb had done a 
really good job with the original implementation, but subsequent maintainers 
didn't understand the code as well as he did and the code has suffered from 
some half assed fixes. Certainly some of the code in the variables widget is 
much too complicated. If I personally was trying to improve gdb support, I 
would do it by just porting the ruby debugger code back to gdb. Even if you 
don't do this, you can use the ruby debugger as a reference implementation 
for behaviour as you've done above. 

-- Richard




More information about the KDevelop-devel mailing list