Polyphemus is a tool that gives a higher level representation of the object ordinary pointers (OOP) for the Pharo VM. It also proposes a visualization of the memory. Polyphemus can be used on a memory while developing the VM inside the simulator or to explore real images.
The simplest way to use is to execute the following:
MemoryInspector openOn: anInterpreter
. (MemoryInspector newFromImage: path) open
. The path should be provided as a string.
A small image is provided by default and its path is accessible through the message send: PharoImageAccessor pathToCandle64Bit.
.
You can also download the latests minimal & regular Pharo images using the class PharoImageAccessor.
.
The Memory Inspector has 4 tabs: A scripter, a class and methods browser, and the new and the old space objects visualisation.
ReifiedMemory select: [ :anOop | anOop isCompiledMethod ]
. Note: An image is only the old space.
Therefore, loading an image into Polyphemus will display an empty new space !
Clicking on a box opens an inspector on a reification of the oop (based on carolina's inspector).
We do as many guess as possible to provide the user with as many high level information as possible.
Particularly, string interpretation.
Moreover, the object in the inspector can be navigated just like Pharo objects.
The main idea of Polyphemus is to provide a higher level vision of VMs OOPs.
However, this is meant to be a basis for Pharo tools.
Particularly we are investigating how to investigate memory corruptions and how to recover dead images.
We were able to save a dead image, see the other Ressources section.
Video submited to the Esug'22 Innovation Technology Awards.
Report of how we used Polyphemus to resurrect a dead image.
Paper accepted at VMIL'22 (preprint)