Indeed we spent some time in Edinburgh looking at it :-) that was too long ago 
:-(

The problem i see with the original debugger inherited from Squeak, in the 
Pharo context, is that it is very sensitive to a lot of the core code in the 
image. What this means is that the accelerated changes in Pharo code base had 
unintended side effects on original debugger machinery as it diverged from its 
ancestry. It goes all the way back to pushing Eliot's closure implementation in 
1.0 which we were desperate and excited for. 

Since we relied on taking core compiler/closure/debugger code from Squeak it 
became more and
more important to track the difference between squeak and Pharo. Anyone who has 
tried looking at the diffs will know how hard that is.  I forget which class it 
was but we found this obscure bug in one of the collection classes IIRC that 
threw one tiny but annoying aspect of debugger highlighting off. I only found 
that by single stepping both images through known code snippets with this 
debugger 'oscilloscope' I had hacked up for the purpose. What that experience 
showed was it was really involved how the instruction machinery hangs together. 
As squeak trunk is where most fixes get pushed in this area it requires huge 
resources and diligence to track every change to see if Pharo needs it. For 
ages Stef would post every interesting looking trunk change to the pharo bug 
tracker but there were not many folks looking at them all. And also it is not 
nice work. We didn't have the tools or modularity to cherry pick changes in 
this area. 

So the new debugger model in Glamorous showed an interesting direction to go in 
and this comment from Marcus is also interesting on seemingly building a new 
debugger architecture which we have discussed before.  I was trying to do was 
to figure out a way you could regression test the debugger by recording and 
replaying examples of it's operation and checking each release it hadn't been 
broken unexpectedly. I think there is still mileage in that area if it has not 
been done already. 

Also, historically, I am not convinced it was ever properly working in the 
sapphire build or even in 3.9. The bugs and effects were so subtle that you 
just got used to working around them. I.e. I have 20 mins to do some coding do 
I add a bit more to my cool seaside app or do I struggle with fixing the 
debugger? Last I looked at squeak trunk it was looking pretty good. But the 
code base is hard to track. 

What I was last thinking about in this area was trying to live 'trace' in some 
way all the code required by the debugger into a filed out and renamed set of 
classes like :SqDebugger SqArray SqCompiler SqInstructionStream and so on and 
then load them into Pharo. The idea being you would have an identical 
implementation that you would use to operate on all the Pharo code but entirely 
independent from it and maintained in squeak trunk. It is an unrealistic idea 
but the example i was thinking about from the electronic world is using one 
oscilloscope to test or observe the internals of another.  You could do that 
image to image over the network of course but I am not sure if you just vary 
the complexity in a different direction. 

Anyway just my 2p, I care a lot I about the tooling and look forward to seeing 
what comes out! 

Cheers,
Mike 

(a bit absent, but still enjoying the progress)

On 13 Dec 2012, at 09:40, Igor Stasenko <siguc...@gmail.com> wrote:

> On 13 December 2012 10:30, Stéphane Ducasse <stephane.duca...@inria.fr> wrote:
>> Now adrian I imagine that you saw that people worked on this bug and this is 
>> a rather complex one.
>> So I would suggest to you to avoid to draw conclusions too fast.
>> 
> yes, if i remember, we tried to approach it at least once..
> but unfortunately it requires a lot deeper knowledge about bytecode
> and (de)optimizations to fix highlight.
> 
>> Stef
>> 
>> On Dec 12, 2012, at 11:28 PM, adrians wrote:
>> 
>>> 
>>> Well, it just seems that I'm whining here instead of contributing, but if
>>> the debugger is indeed a very (if not the most) useful tool which is used in
>>> pretty much every bit of fix-up work, fixing it if it is broken would have
>>> to come before all else, no? Otherwise, any work that needs to be done until
>>> it is looked at is just compounded.
>>> 
>>> Maybe it would make sense to correct (in the current code) to a small degree
>>> just one of the things that is currently broken. No frills, but just getting
>>> a more accurate indication of where the PC is - at least have it on the
>>> correct line of code if it can't be pinpointed more accurately without too
>>> much hassle. I'm curious what derails the location highlighting as half of
>>> the time it is close, if not correct. Is it blocks that give it a hard time?
>>> It wouldn't be too bad if other things were going to take a while if you
>>> could at least keep track of where you were.
>>> 
>>> If the idea is to wait until a whole big refactoring can be done on this, I
>>> fear a fully debugger might be another year away.
>>> 
>>> -- Adrian
>>> 
>>> 
>>> 
>>> --
>>> View this message in context: 
>>> http://forum.world.st/Helping-the-noobs-help-out-i-e-fixing-the-debugger-tp4658666p4659105.html
>>> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>>> 
>> 
>> 
> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko.
> 

Reply via email to