On Wed, Nov 25, 2015 at 6:29 PM, Denis Kudriashov <dionisiydk@gmail.com> wrote:
2015-11-25 17:16 GMT+01:00 Andrei Chis <chisvasileandrei@gmail.com>:
Hi,
In updating the debuggers from moose to the new API just one small issue came up:
- Process>>newDebugSessionNamed:startedAt: hardcodes DebugSession. However we are using different debugging sessions.
The class side method #sessionClass of a debugger returns the debugging session's class. That could be used instead of DebugSession.
To provide fast fix we can rewrite process method with:
Process>>newDebugSessionNamed: aString startedAt: aContext
^Smalltalk tools debugger sessionClass named: aString on: self startedAt: aContext
Could you publish issue and slice?
We can postpone this for the moment. I'll look a bit more at how this fits with the debuggers from moose as I'd like a more general solution where the debugger can be dynamically selected.
In my fixes I try to put single point for debugging. I removed some old methods and clean places where they was used. Session is actual debugger model. And I was think that it is better to always create debugger on it. Now I think that maybe debug session should be internal object for debugger. But it's seems strange.
When I added the session I viewed it as a model for the debugger. SpecDebugger and GTStackDebugger are just two different user interfaces for the same model (DebugSession).
My main target is remote debugger. So I try to investigate all related stuff.
Cool target :)
What subclasses of DebugSession implement specifically? For what they needed?
For example, GTBytecodeDebugger uses GTBytecodeDebuggerSession which makes sure step instructions only go over one bytecode (so no usage of #stepToSendOrReturn which are needed in the normal debugger). Apart from this other sessions store more information. For example GTSUnitDebugSession stores the context with the failing assertion.
If we move to GTDebugger completely can we have only debug session class?
GTGenericStackDebugger, the equivalent of SpecDebugger, uses also DebugSession (it just adds a few extension methods). All other debuggers have sessions that just inherit from DebugSession and they can be loaded separately. Cheers, Andrei