Common LISP自带单步跟踪功能

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


转载于:https://my.oschina.net/u/188924/blog/490943

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值