[Newbies] object instance browser?

karl ramberg karlramberg at gmail.com
Sat Jan 4 19:03:28 UTC 2014


Posted to the inbox. I don't have login for trunk

Karl


On Tue, Dec 31, 2013 at 12:40 PM, Bert Freudenberg <bert at freudenbergs.de>wrote:

> Hey, I wrote it, you make the workspace, deal? ;)
>
> Happy New Year, btw.
>
> - Bert -
>
> On 31.12.2013, at 12:37, karl ramberg <karlramberg at gmail.com> wrote:
>
> Make a Welcome Workspace with this info :-)
>
> Cheers,
> Karl
>
>
> On Tue, Dec 31, 2013 at 11:27 AM, Bert Freudenberg <bert at freudenbergs.de>wrote:
>
>> On 31.12.2013, at 08:53, David Holiday <neuburge at rohan.sdsu.edu> wrote:
>>
>> > Is there a way to browse the ecosystem of objects in a Smalltalk image?
>>
>> Yes, multiple ones in fact. This is a major reason working in Smalltalk
>> feels more immediate than in other environments.
>>
>> > I'm not talking about the class browser, what I'm looking for is a way
>> to see what objects have actually been instantiated and what their state is.
>>
>> The basic tool for this is called an Inspector. Whenever you have an
>> expression, like "3 + 4", you press cmd-i to "inspect it", which opens an
>> inspector on the result. This works in any text area. Try for example
>> inspecting "self" in a class browser, and you will inspect the underlying
>> class object (which the browser shows a high-level view of).
>>
>> In the Inspector you see the objects referenced by this object (via
>> instance variables or indexed fields) in the left panel. Select any of them
>> and choose "inspect" from the context menu (or press cmd-i again). This way
>> you can inspect all the objects in the system.
>>
>> A more modern tool than the Inspector (which was around 40 years ago
>> already) is the Object Explorer. It presents you a tree view of an object
>> and its "children", which again are the instance variables and indexed
>> fields of the object. Open it with cmd-shift-i (or "explore" in the context
>> menu).
>>
>> You can also do the reverse. If you choose "objects pointing to this
>> value" you get an inspector showing all the objects that directly point to
>> this object. Similarly there is a "reverse explorer", which you can open by
>> selecting "explore pointers".
>>
>> There are two roots to all the objects in the system:
>>
>>         Smalltalk specialObjectsArray
>>
>> which basically holds everything the Virtual Machine needs to know about,
>> and in turn almost every object in the whole image, and
>>
>>         thisContext
>>
>> which is the current execution context, holding onto temporary objects.
>> When a garbage collection is performed, any object not reachable form
>> either of these two roots is removed from memory.
>>
>> An "interesting" global object to explore is
>>
>>         Project current
>>
>> which holds your current workspace, in particular
>>
>>         Project current world
>>
>> , the root of all morphs in the world. And of course
>>
>>         Smalltalk
>>
>> itself is the dictionary that holds all global objects, including all
>> classes (unless they are defined in a non-global environment).
>>
>> There is also a low-level way to enumerate all objects in memory. "self
>> someObject" will return the very first object in memory (which happens to
>> be the nil object), and "anObject nextObject" will return the next one:
>>
>>         | object count |
>>         count := 0.
>>         object := self someObject.
>>         [0 == object]
>>                 whileFalse: [count := count + 1.
>>                         object := object nextObject].
>>         count
>>
>> Interestingly, this also finds objects that are due to be
>> garbage-collected. For example, if you accidentally closed a text window,
>> there is a good chance its contents will still be in memory, and can be
>> retrieved using an expression like
>>
>>         ByteString allInstances last: 10
>>
>> This makes use of the someInstance/nextInstance methods, which are
>> similar to someObject/nextObject, but restricted to instances of one class
>> only.
>>
>> Hope you have fun poking around in the world of objects :)
>>
>> - Bert -
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20140104/50ece7cc/attachment.htm


More information about the Beginners mailing list