码迷,mamicode.com
首页 > 其他好文 > 详细

Common LISP自带单步跟踪功能

时间:2015-08-11 23:51:00      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:

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

1】启动单步跟踪

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

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

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

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

Step 1 SDRAW[61]> help    

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

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

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

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状态


Common LISP自带单步跟踪功能

标签:

原文地址:http://my.oschina.net/u/188924/blog/490943

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!