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

时间: 2024-12-25 06:16:36

Common LISP自带单步跟踪功能的相关文章

【笔记】单步跟踪法与UPX的脱壳理解

用PEiD查壳 UPX v0.89.6 - v1.02 / v1.05 - v1.22    这个是入门的壳,只是一个简单的压缩壳 用Stud_PE查看PE文件头信息 主要是看一下ImageBase的值 00400000,这是一个16进制数.在后面OD载入后,可以用这个值在内存映像中查看PE文件加载到内存后的情况. 还有EntryPoint的值: 0000E8C0 程序入口 OD载入看内存映像 用OD载入,ALT+M打开这个窗口,就可以看到upx.exe程序加载到内存后的映像,主要有四块,但重要

Common Lisp编程初步---环境搭建和外部lisp代码运行

1 介绍 Lisp是世界上第二古老的语言,第一古老语言是Fortran.Lisp语言的创立者为John McCarthy,一位人工智能领域里的先驱.该语言自创立以来经历了50多年而不衰,是一种很有生命力的语言.该语言的发展和使用与CMU和MIT两所高校密不可分,在相当长的时期内是这两所高校的大学计算机课程指定语言. 在该语言创立之初,除了创建者外,还有其他的一些高校著名学者也参与到了Lisp语言的发展完善当中.于是就出现了多个Lisp的dialect,这对该语言的移植非常不便.为此在1981年丛

Pycharm中实现单步跟踪

在分析程序执行次序和功能时,我们经常需要对程序进行单步跟踪调试,下面就介绍下在Pycharm中如何调试: 1.首先,如果使用过VS的朋友应该都知道如何使用单步跟踪进行程序的调试,在VS中不设置断点也是可以单步执行的,但是在Pycharm则不一样: 2.在Pycharm中,进入程序的调试可以点击工具栏中的甲虫图标,或者依次点击:Run->Debug,或者按F9选择待调试的程序然后回车进入,Debug图标位置如下图中红框所示: 这里需要注意的是,我们需要在自己想要的位置设置断点,这样程序才不会一次性

ANSI Common Lisp Chapter 2

Chapter 2 总结 (Summary) Lisp 是一种交互式语言.如果你在顶层输入一个表达式, Lisp 会显示它的值. Lisp 程序由表达式组成.表达式可以是原子,或一个由操作符跟着零个或多个实参的列表.前序表示法代表操作符可以有任意数量的实参. Common Lisp 函数调用的求值规则: 依序对实参从左至右求值,接着把它们的值传入由操作符表示的函数. quote 操作符有自己的求值规则,它完封不动地返回实参. 除了一般的数据类型, Lisp 还有符号跟列表.由于 Lisp 程序是

搭建fedora开发环境 common lisp, c++, go

原帖http://www.linuxdown.net/install/soft/2016/0303/4903.html 安装vim sudo dnf -y update sudo dnf install vim-enhanced common lisp 原帖:http://www.programgo.com/article/17905013763/ 需要用到的软件: sbcl,比较流行的一种common lisp实现:emacs,用作开发环境,虽然比较复杂,但是比原来的命令行好用多了:slime

Ecmall系统自带的分页功能

在Ecmall的二次开发中,分页是必不可少的.这个系统已经自带了分页功能,下面来看看如何使用这个分页. 下面是一个自定义的类,用于查看订单的详细情况.关键在于get_order_data()这个方法,分页的使用也在这个方法的内部了.应该有的注释都有了,应该会比较容易懂,我不就多说了. <?php define('NUM_PER_PAGE', 15); // 每页显示数量 class NowaMagicApp extends MallbaseApp { public function index(

Common Lisp学习资源整理

Lisp Hackers: Interviews with 100x More Productive Programmers Posted on June 26th, 2013 Lisp Hackers: Interviews with 100x More Productive Programmers, by Vsevolod Dyomkin, is available for free in multiple formats from Leanpub. Let Over Lambda Post

DEDE自带的采集功能,标题太短的解决方法

DEDE自带的采集功能,标题太短获取不全的解决方法搜索了好多之后,终于还是在dede的官方论坛找到了答案.增加采集标题长度:255  目的:原标题长度太小,影响文件采集⑴修改系统参数设置(文档标题最大长度)位置:系统-系统设置-系统基本参数-其他选项-文档标题最大长度:255⑵修改文档表dede_archives 字段title 为varchar(255)位置:系统-系统设置-SQL命令行工具Alter table dede_archives change title title varchar

Visual Studio调试之避免单步跟踪调试模式

Visual Studio调试之避免单步跟踪调试模式 写完Visual Studio调试之断点进阶篇之后,想分享一下我常用的一些调试技巧,后面发现写之前,一些背景知识需要介绍一下. 下面是几篇今年2月份在CSDN写的几篇文章,比如关于如何使用第一次异常处理机会和第二次异常处理机会的区别来快速定位异常发生的位置,如何设置函数断点之类的文章.因为后续我打算写几篇我常用的小技巧,可能需要先了解一些背景知识,就只把链接贴出来了.理解First Chance和Second Chance避免单步调试:htt