Oz and Mozart Users Mailing List

Re: trace option


From: Adriano Volpones (adriano.volpones@arscomputandi.com)
Date: Thu Nov 21 2002 - 10:31:18 CET


Thanks Joachim for your answer.

> For debugging of course, you would prefer not to write services
> on your own. Instead, you asked for a tool that tells you something
> about what is going on inside of search spaces

Only some notes to share with the community:

First of all I am a smalltalker and in that environment
there is an easy way to trap for tracing the message pump:
you can substitute the instance of the object to be traced
with another one of a class not implementing the interface
and redefine the method

     #doesNotUnderstand: aMessage

where the action for trace is followed by a call to the original
object (Proxi pattern).

In my opinion the same could be done with the catch all

         meth otherwise(Message) ... end

and the method name hiding where

        feat methodToSpy: MethodToSpy % declare the method to
trace
        ...
        Lbl = self.{Label methodToSpy(...)}
        Msg = {Adjoin Message Lbl()} % build the real message
        ... % here code to Browse
        {self Msg} % final call

Obviously all that code is terribly slow due to the rebuilt of the Message
(but in debugging speed is not the main concern ;-)).

Moreover all the application must be organized as "Object based" so that
every object could have the common ancestor class implementing the indirect
call.

Any suggestions ?

 Adriano

-
Please send submissions to users@mozart-oz.org
and administriva mail to users-request@mozart-oz.org.
The Mozart Oz web site is at http://www.mozart-oz.org/.



This archive was generated by hypermail 2b29.