Common LISP自带单步跟踪功能

Common LISP自带单步跟踪功能,执行 (step 要跟踪的命令)便可。以sdraw为例,跟踪其执行。函数

1】启动单步跟踪this

SDRAW[60]> (step (sdraw '(a (b c d) c)))lua

step 1 --> (SDRAW '(A (B C D) C))     显示下一个要执行的语句spa

Step 1 SDRAW[61]>                         等待用户输入调试指令调试

2】输入help查看帮助,帮助的内容不少,前面一大段和Debug是同样的。经常使用的指令有四个,Step表示进入表达式内部;Next表示快速执行当前表达式,并移到下一个表达式;Over表示从表达式返回,能够理解为从函数返回;Continue表示结束单步跟踪状态,快速执行完整个程序。注意一下,不是直接输入step等命令,而是输入简写“冒号加首字母”。orm

Step 1 SDRAW[61]> help    ci

Step           :s       step into form: evaluate this form in single step modeit

Next           :n       step over form: evaluate this form at onceio

Over           :o       step over this level: evaluate at once up to the next returnform

Continue       :c       switch off single step mode, continue evaluation

-- Step-until :su, Next-until :nu, Over-until :ou, Continue-until :cu --

           same as above, specify a condition when to stop

3】执行几步看看

Step 1 SDRAW[61]> :s         进入函数调用内部

step 2 --> '(A (B C D) C)             进入函数前,要求值每个参数

Step 2 SDRAW[62]> :s

step 2 ==> value: (A (B C D) C)    显示上一条命令的执行结果

step 2 --> NIL              表达式是一个树状结构,这个分支已经没有命令了,显示为空

Step 2 SDRAW[63]> :s

step 2 ==> value: NIL           上一个表达式为空,执行结果也为空

step 2 -->                     下面是函数sdraw的、复杂的实现,不少内容省掉了

(LET ((*SDRAW-CIRCULAR-SWITCH* #) (START-COL #)) (INIT-STRUCT1 START-COL)

 (CLRHASH *CIRC-HASH-TABLE*) ...)

Step 2 SDRAW[64]>

4】任什么时候候均可以查看变量的内容,输入变量名便可,也能够执行其余的表达式

【5】若是输入了错误的命令,会进入Debug状态,输入ctrl+d能够退出Debug状态

相关文章
相关标签/搜索