文档章节

Common LISP自带单步跟踪功能

legend3
 legend3
发布于 2015/08/11 22:08
字数 506
阅读 76
收藏 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状态


本文转载自:http://blog.csdn.net/dragonzht/article/details/8299699

legend3
粉丝 4
博文 104
码字总数 14831
作品 0
深圳
私信 提问
介绍个Lisp开发最合适的IDE - My Emacs For Common Lisp

http://nakrakiiya.github.io/mefcl/index.html 它打包了好几个开源的common lisp编译器。 安装后直接可以使用,不需要配置。 特性 集成各种开源Common Lisp实现的官方版本。无需配置,直接启...

绝对零度
2013/09/11
4.8K
2
用于 Common Lisp 的 Numpy 克隆 - Numcl

Numcl 是适用于 Common Lisp 的 Numpy 克隆。目前该库使用纯 Common Lisp 编写,比起速度,更注重正确性和有效性。 用户可通过 https://github.com/numcl/numcl/projects/1 跟踪项目进度。 ...

匿名
05/15
185
0
一个很有趣的用于调试函数代码的函数 dtrace.lisp

一个很有趣的用于调试函数代码的函数 dtrace.lisp,来自这本书《COMMON LISP:A Gentle Introduction to Symbolic Computation》。 Common Lisp 中原来就有一个跟踪函数 trace,使用时把你要跟...

FreeBlues
2014/02/17
159
1
SBCL 1.5.5 发布,开源 Common Lisp 编译器

SBCL 1.5.5 已经发布,SBCL(Steel Bank Common Lisp)源自于 CMUCL, 是一种高性能的 Common Lisp 编译器。除了 ANSI Common Lisp 的编译器和运行系统,它提供了一个交互的运行环境,包括一个...

afterer
07/31
618
1
QT分析之网络编程(五)

今天分析QNetworkAccessManager、QNetworkRequest和QNetworkReply组成的高级抽象API序列。在动手之前,把doc中有关QNetworkAccessManager的介绍看了一遍。其使用方法大致是: QNetworkAccess...

nothingfinal
2013/03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部