[Pharo-project] [ANN] The Jejak Trace framework

Goubier Thierry thierry.goubier at cea.fr
Wed Jul 18 14:55:43 CEST 2012

I announce the first availability of the Jejak trace framework at


During the VALMADEO project (a PRIR/Région Bretagne funded project 
directed by C. Dezan, <dezan at univ-brest.fr>), we needed a tool to study 
in detail how some algorithms (error correcting codes) could work 
without errors, but with degraded performance. Execution and compilation 
would report no errors, but the performance of the error correcting 
coding and decoding would be several dB below the target. The error 
correcting code was looping hundreds of times over each block of data, 
making step by step debugging unusable. Profiling, message tallies were 
too coarse to tell us anything. We needed a different tool.

The answer was this trace tool : a framework for injecting probes into 
methods, and record their execution. It can record an execution to the 
smallest detail (all calls, all values, all assignments), that over a 
long sequence (hundreds or thousands of calls), and let one navigate 
freely through the recorded trace along with the traced source code. It 
is capable of tracing system, startup or display methods, without 
interruption or blocking the overall image, allowing for very fine 
non-intrusive system analysis.

It has been used for debugging turbo codes implementations, algorithm 
understanding on turbo codes, and memory behaviour analysis for embedded 
systems design space exploration.

It requires The Opal compiler and is integrated with OmniBrowser, and is 
tested in a Pharo 1.4 image. Instructions for loading are :

Gofer it
     squeaksource: 'MetacelloRepository';
     package: 'ConfigurationOfOmniBrowser';

     project version: #stable) load: #( 'Dev' 'Dev Tests').

Gofer new
      url: 'http://smalltalkhub.com/mc/MarcusDenker/Opal/main';

(Smalltalk at: #ConfigurationOfOpalCompiler) load.

Gofer new
     repository: 'http://ss3.gemstone.com/ss/Jejak';

There is a lot left to be done (better event logging, out of image 
logging, performance issues), but, as it is, it can be used for tracing 
almost any code in the image, even ones which may lock-up the image when 
halted (beware : bugs in the tracer may still lock or crash the image). 
It is also a very pedagogic way of seeing a full execution through a set 
of methods.

Thierry Goubier
CEA list
Laboratoire des Fondations des Systèmes Temps Réel Embarqués
91191 Gif sur Yvette Cedex
Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95

More information about the Pharo-project mailing list