Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [platform-debug-dev] Proposal: Debug Expressions


(1) An "expired" _expression_ refers to an _expression_ that can no longer be evaluated. For example, when I "inspect" an _expression_ that results in an object, and the VM that that object lives in termiantes, the _expression_ has expired. That is, the object can no longer be inspected becuase it no longer exists. A user deleting an _expression_ is different - i.e. the request came from the user (i.e. from the outside). An "expiration" comes from an implementation of an _expression_ (i.e. from the inside).

Note, that the "expiration" depends on an implementation. For an "inspected" expresion an exipration occurrs when the inspected object can no longer be seen (garbage collected, VM dies). For a "watch item", an expiration may never occurr, as a watch item is an _expression_ that can be evaluated in many different contexts.

(2) Regarding event firing... it is up to the model to fire an event whenever the value changes. This is because it is only the implementation knows when the value has changed and when to evaluate. The generic debug UI does not know when to evaluate an _expression_ - only the underlying implementation. For example, and "inspected" _expression_ evaluates when first inspected, and then its value is updated (but the _expression_ is not re-evaluated) when a thread in its associated VM suspends. A "watch item" will evaluate only when a thread suspends in a specific location.

(3) Regarding "turning off" an _expression_. An implementation could choose to "disable" an _expression_. This would seem reasonable for "watch items".

Darin






Dave_Dykstal@xxxxxxx
Sent by: platform-debug-dev-admin@xxxxxxxxxxx

11/28/2001 02:12 PM
Please respond to platform-debug-dev

       
        To:        platform-debug-dev@xxxxxxxxxxx
        cc:        
        Subject:        Re: [platform-debug-dev] Proposal: Debug Expressions



Darin --


Just a couple of questions from someone not intimately familiar with the debugger details.  


-- What is an "expired" _expression_ -- one that cannot be evaluated because it's components are out of scope, one that has be marked "disabled" by the user, or one that has just been deleted by the user?


-- You mention that expressions must fire an event when the value of an _expression_ has changed.   Expressions may also be asked for their value, for example by UI hitting reaching a suspend point with a watched _expression_.  Is it the responsibility of the model to fire the event whenever the _expression_ changes value or only in response to a request for the _expression_ to be reevaluated?


and a comment:


-- It seems that an _expression_ may not be able to be evaluated not only because its dependencies are not met (wrong model, component variable out of scope, ...) but also because a user has requested that it not be evaluated until some other point in time -- so there should be some way of manually turning off evaluation of an _expression_.


-- Dave



Back to the top