Debugging
At the present, a complete step by step debugger is not available. Nevertheless a tracing tool exists and it can be easily used for debugging a Jolie program.
Tracing
A Jolie program can be easily traced enabling this feature in the command line with the parameter --trace
. As an example, let us consider the helloworld program explained here. If you need to enable the tracer just run it using the following command line:
jolie --trace myFirstJolieService.ol
As a result, in the console, you should see the following lines:
[myFirstJolieService.ol] 1. ^ LOAD Java Service Loader joliex.io.ConsoleService
<yourpath>/myFirstJolieService.ol:52. << SR println@Console SENDING MSG_ID:1
Value: = Hello, world! : string
<yourpath>/myFirstJolieService.ol:53. << SR println@Console SENT MSG_ID:1
Value: = Hello, world! : string
Hello, world!
<yourpath>/myFirstJolieService.ol:54. << SR println@Console RECEIVED MSG_ID:1
Value:
it reports all the actions performed by the program. In the specific case it just reports the three actions related to the solicit-response println
which are: SENDING
, SENT
, and RECEIVED
. If it seems strange to you that printing something to the console triggers some message exchange actions, just remember that in Jolie everything is a service and also printing a message on the console requires a service. This is why we see the three actions related to the message sending.
Jolie Trace Viewer
When the Jolie program has a lot of lines of code it can be difficult to analyze a trace reported into the console. In this case it is possible to use a web tool which make the navigation of the traces more easy. In order to enable it, it is necessary to save the traces into a file instead of printing them in the console. In order to do this, just specify the parameter file
after the term --trace
as in the following example:
jolie --trace file myFirstJolieService.ol
In this case, no traces will be printed in the console, but they will be stored into a file named as <timestamp>.jolie.log.json
. Such a file can be navigated using a called jolietraceviewer. You can install jolietraceviewer through npm:
npm install -g @jolie/jolietraceviewer
Once jolietraceviewer is installed, just run the command jolietraceviewer
from the same folder where you ran the Jolie program. The following statement will appear in the console: Jolie Trace Viewer is running, open your browser and set the url http://localhost:8000
. Thus, just open your browser at http://localhost:8000
and navigate through the traces generated by your Jolie program.
Running the jolietraceviewer on a different port
By default jolietraceviewer
runs on port 8000 but it is possible to change it by specifying a different port as an argument. In the following example we run jolietraceviewer
on port 8001. jolietraceviewer 8001
Defining the tracer level
By default the tracer just traces everything both communication and computation actions. It is possible to restricts the tracing only to communication actions or computation actions. Use the parameter ---traceLevel [ALL|COMP|COMM]
for specifying the level. As an example let us consider the following:
jolie --trace file --traceLevel comm myFirstJolieService.ol
It just traces only the communication actions. Use comp
for tracing only the computation ones.