How to be able to get a debugger inside DNU

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

How to be able to get a debugger inside DNU

Stephane Ducasse-3
Hi 

In the past it was possible to step throw such code and now we cannot anymore 
because of a smart trick. I should say that I hate when we break the reachibility and understandibility of the system.
So why I cannot get a debugger opens after the halt: ?
How do I get that ?

Now I will put traces: super cool!

Stef

doesNotUnderstand: aMessage
"support sending message to access properties"

| selector |
selector := aMessage selector.
self halt: aMessage selector.
^ selector isUnary
ifTrue: [ (self hasPropertyAt: selector)
ifTrue: [ self propertyAt: aMessage selector asSymbol ]
ifFalse: [ super doesNotUnderstand: aMessage ] ]
ifFalse: [ selector numArgs = 1
ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
ifFalse: [ super doesNotUnderstand: aMessage ] ]
Reply | Threaded
Open this post in threaded view
|

Re: How to be able to get a debugger inside DNU

Tudor Girba-2
Hi,

I am not quite sure where the issue is because I cannot seem to reproduce the problem.

I try this Playground script:

Object subclass: #ABC
        instanceVariableNames: ''
        classVariableNames: ''
        package: 'ABC'.

ABC compile: 'doesNotUnderstand: aMessage
        "support sending message to access properties"

        | selector |
        selector := aMessage selector.
        self halt: aMessage selector.
        ^ selector isUnary
                ifTrue: [ (self hasPropertyAt: selector)
                                ifTrue: [ self propertyAt: aMessage selector asSymbol ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]
                ifFalse: [ selector numArgs = 1
                                ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]'.
                       
ABC new bla.



And I get a debugger. What am I missing?

Cheers,
Doru



> On May 13, 2017, at 6:05 PM, Stephane Ducasse <[hidden email]> wrote:
>
> Hi
>
> In the past it was possible to step throw such code and now we cannot anymore
> because of a smart trick. I should say that I hate when we break the reachibility and understandibility of the system.
> So why I cannot get a debugger opens after the halt: ?
> How do I get that ?
>
> Now I will put traces: super cool!
>
> Stef
>
> doesNotUnderstand: aMessage
> "support sending message to access properties"
>
> | selector |
> selector := aMessage selector.
> self halt: aMessage selector.
> ^ selector isUnary
> ifTrue: [ (self hasPropertyAt: selector)
> ifTrue: [ self propertyAt: aMessage selector asSymbol ]
> ifFalse: [ super doesNotUnderstand: aMessage ] ]
> ifFalse: [ selector numArgs = 1
> ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
> ifFalse: [ super doesNotUnderstand: aMessage ] ]

--
www.tudorgirba.com
www.feenk.com

“Live like you mean it."


Reply | Threaded
Open this post in threaded view
|

Re: How to be able to get a debugger inside DNU

Stephane Ducasse-3
In fact my test was broken an in addition the debugger does not show the top frame and it took me a while to see that I 
should always scroll to be the stack. 
And I was always only seeing this mustBeABoolean. 

On Sat, May 13, 2017 at 9:17 PM, Tudor Girba <[hidden email]> wrote:
Hi,

I am not quite sure where the issue is because I cannot seem to reproduce the problem.

I try this Playground script:

Object subclass: #ABC
        instanceVariableNames: ''
        classVariableNames: ''
        package: 'ABC'.

ABC compile: 'doesNotUnderstand: aMessage
        "support sending message to access properties"

        | selector |
        selector := aMessage selector.
        self halt: aMessage selector.
        ^ selector isUnary
                ifTrue: [ (self hasPropertyAt: selector)
                                ifTrue: [ self propertyAt: aMessage selector asSymbol ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]
                ifFalse: [ selector numArgs = 1
                                ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]'.

ABC new bla.



And I get a debugger. What am I missing?

Cheers,
Doru



> On May 13, 2017, at 6:05 PM, Stephane Ducasse <[hidden email]> wrote:
>
> Hi
>
> In the past it was possible to step throw such code and now we cannot anymore
> because of a smart trick. I should say that I hate when we break the reachibility and understandibility of the system.
> So why I cannot get a debugger opens after the halt: ?
> How do I get that ?
>
> Now I will put traces: super cool!
>
> Stef
>
> doesNotUnderstand: aMessage
>       "support sending message to access properties"
>
>       | selector |
>       selector := aMessage selector.
>       self halt: aMessage selector.
>       ^ selector isUnary
>               ifTrue: [ (self hasPropertyAt: selector)
>                               ifTrue: [ self propertyAt: aMessage selector asSymbol ]
>                               ifFalse: [ super doesNotUnderstand: aMessage ] ]
>               ifFalse: [ selector numArgs = 1
>                               ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
>                               ifFalse: [ super doesNotUnderstand: aMessage ] ]

--
www.tudorgirba.com
www.feenk.com

“Live like you mean it."



Reply | Threaded
Open this post in threaded view
|

Re: How to be able to get a debugger inside DNU

philippeback
I also have to scroll up to see the last frame (Pharo 5.0). 

Phil

On Sat, May 13, 2017 at 9:27 PM, Stephane Ducasse <[hidden email]> wrote:
In fact my test was broken an in addition the debugger does not show the top frame and it took me a while to see that I 
should always scroll to be the stack. 
And I was always only seeing this mustBeABoolean. 

On Sat, May 13, 2017 at 9:17 PM, Tudor Girba <[hidden email]> wrote:
Hi,

I am not quite sure where the issue is because I cannot seem to reproduce the problem.

I try this Playground script:

Object subclass: #ABC
        instanceVariableNames: ''
        classVariableNames: ''
        package: 'ABC'.

ABC compile: 'doesNotUnderstand: aMessage
        "support sending message to access properties"

        | selector |
        selector := aMessage selector.
        self halt: aMessage selector.
        ^ selector isUnary
                ifTrue: [ (self hasPropertyAt: selector)
                                ifTrue: [ self propertyAt: aMessage selector asSymbol ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]
                ifFalse: [ selector numArgs = 1
                                ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]'.

ABC new bla.



And I get a debugger. What am I missing?

Cheers,
Doru



> On May 13, 2017, at 6:05 PM, Stephane Ducasse <[hidden email]> wrote:
>
> Hi
>
> In the past it was possible to step throw such code and now we cannot anymore
> because of a smart trick. I should say that I hate when we break the reachibility and understandibility of the system.
> So why I cannot get a debugger opens after the halt: ?
> How do I get that ?
>
> Now I will put traces: super cool!
>
> Stef
>
> doesNotUnderstand: aMessage
>       "support sending message to access properties"
>
>       | selector |
>       selector := aMessage selector.
>       self halt: aMessage selector.
>       ^ selector isUnary
>               ifTrue: [ (self hasPropertyAt: selector)
>                               ifTrue: [ self propertyAt: aMessage selector asSymbol ]
>                               ifFalse: [ super doesNotUnderstand: aMessage ] ]
>               ifFalse: [ selector numArgs = 1
>                               ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
>                               ifFalse: [ super doesNotUnderstand: aMessage ] ]

--
www.tudorgirba.com
www.feenk.com

“Live like you mean it."




Reply | Threaded
Open this post in threaded view
|

Re: How to be able to get a debugger inside DNU

Stephane Ducasse-3
Yes this is super annoying because I get really confused 

On Sat, May 13, 2017 at 11:10 PM, [hidden email] <[hidden email]> wrote:
I also have to scroll up to see the last frame (Pharo 5.0). 

Phil

On Sat, May 13, 2017 at 9:27 PM, Stephane Ducasse <[hidden email]> wrote:
In fact my test was broken an in addition the debugger does not show the top frame and it took me a while to see that I 
should always scroll to be the stack. 
And I was always only seeing this mustBeABoolean. 

On Sat, May 13, 2017 at 9:17 PM, Tudor Girba <[hidden email]> wrote:
Hi,

I am not quite sure where the issue is because I cannot seem to reproduce the problem.

I try this Playground script:

Object subclass: #ABC
        instanceVariableNames: ''
        classVariableNames: ''
        package: 'ABC'.

ABC compile: 'doesNotUnderstand: aMessage
        "support sending message to access properties"

        | selector |
        selector := aMessage selector.
        self halt: aMessage selector.
        ^ selector isUnary
                ifTrue: [ (self hasPropertyAt: selector)
                                ifTrue: [ self propertyAt: aMessage selector asSymbol ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]
                ifFalse: [ selector numArgs = 1
                                ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
                                ifFalse: [ super doesNotUnderstand: aMessage ] ]'.

ABC new bla.



And I get a debugger. What am I missing?

Cheers,
Doru



> On May 13, 2017, at 6:05 PM, Stephane Ducasse <[hidden email]> wrote:
>
> Hi
>
> In the past it was possible to step throw such code and now we cannot anymore
> because of a smart trick. I should say that I hate when we break the reachibility and understandibility of the system.
> So why I cannot get a debugger opens after the halt: ?
> How do I get that ?
>
> Now I will put traces: super cool!
>
> Stef
>
> doesNotUnderstand: aMessage
>       "support sending message to access properties"
>
>       | selector |
>       selector := aMessage selector.
>       self halt: aMessage selector.
>       ^ selector isUnary
>               ifTrue: [ (self hasPropertyAt: selector)
>                               ifTrue: [ self propertyAt: aMessage selector asSymbol ]
>                               ifFalse: [ super doesNotUnderstand: aMessage ] ]
>               ifFalse: [ selector numArgs = 1
>                               ifTrue: [ self propertyAt: aMessage selector allButLast asSymbol put: aMessage argument ]
>                               ifFalse: [ super doesNotUnderstand: aMessage ] ]

--
www.tudorgirba.com
www.feenk.com

“Live like you mean it."