>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Primer

Debug - stepping through a verb

Debug requires a prokey, and will fail with domain error if a prokey is not set. For more information, see products. If you have not purchased a prokey you won't be able to use debug on your system. You will probably still find it interesting to read these debug sections.

In an earlier section you added a debugging line to a verb definition that allowed you to see the results of intermediate steps when the verb was run. Sometimes you need more powerful tools than that.

Use load to load the debug utilities.

   load 'debug'

Open your script file cf.ijs and run it.

Let's execute centigrade, but with a stop on each line so that you can take a look at exactly what is going on.

   dbss 'centigrade *:*'

The dbss (Set Stop) argument requests a stop before executing all, indicated by *:*, lines in centigrade.

   dbr 1

dbr with an argument of 1 requests that the system suspend execution when an error or stop occurs. When a verb is suspended it is halted in mid execution. You can examine definitions, change definitions, and you can resume execution of the suspended verb.

   centigrade 212
�stop
�       t1=.y.-32
�centigrade[0]

The error report (bars at the left margin) indicates execution stopped on line 0 of centigrade and shows the sentence from that line.

The execution of centigrade is suspended and the indent of six spaces, rather than three, indicates the suspension. The variable y. is the argument.

      y.
212

The stop occurs before the line is executed, so t1 has not been defined and if you try to look at it you will get a value error.

Use dbrun to continue execution. It will run the current line, and because stops are set on all lines it will then stop on the next line.

      dbrun ''
�stop
�       t2=.t1*5
�centigrade[1]

      t1
180

      t1*5
900

centigrade is now stopped on line 1, and as you can see, you are able to check the value of local t1 that was defined in line 0. Step through the next lines and examine locals.

      dbrun ''
�stop
�       t3=.t2%9
�centigrade[2]

      t2
900

      t2%9
100

      dbrun ''
100

You are no longer suspended in centigrade and you are back to the normal indent of three spaces.

Turn off the request for debug suspensions and reset to have no stops.

   dbr 0
   dbss ''

>>  <<  Ndx  Usr  Pri  Phr  Dic  Rel  Voc  !:  wd  Help  Primer