博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
newlisp debugger
阅读量:7066 次
发布时间:2019-06-28

本文共 3466 字,大约阅读时间需要 11 分钟。

写了很多newlsip程序,一直都是用println 来打印,查找问题。

但是随着程序越来越多,debug就变得越来越重要。今天在实现自己的TEA算法时,就需要调试newlips程序。

启动debugger很简单,只需要在newlisp会话中调用:

 

(trace true)

然后加载自己的lsp文件,调用函数,就可以进行调试了。

 

不过为了方便,还可以用(debug call-your-function)。

下面举个例子:

加入我有一个函数叫做cml-encrypt,用debug来调用它。

然后就会看到该函数的代码,并且提示你用s进入函数调试,n不进入当前调用的函数调试,c一直运行。

用# ... # 将当前正在求值的表达式包起来。

不足之处在于没有断点可以设置。

 

> (debug (cml-encrypt "12345678" "9000000000l1cm0c"))-----(define (cml-encrypt value key)  #(let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4))#)[-> 3 ] s|tep n|ext c|ont q|uit > s-----(define (cml-encrypt value key)  (let ((v0 #(sum-bytes value 0 4)#) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))[-> 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 #(sum-bytes value 0 4)#) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))RESULT: 202[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 (sum-bytes value 0 4)) (v1 #(sum-bytes value 4 8)#) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))RESULT: 218[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 #(sum-bytes key       0 4)#)     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))RESULT: 201[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 #(sum-bytes key 4 8)#)     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))RESULT: 192[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 #(sum-bytes key 8 12)#)     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))RESULT: 253[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 #(sum-bytes key 12 16)#))    (cml-tea v0 v1 k0 k1 k2 k3 k4)))RESULT: 355[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  (let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    #(cml-tea v0 v1 k0 k1 k2 k3 k4)#))RESULT: (84941945375 84941945848)[<- 4 ] s|tep n|ext c|ont q|uit > n-----(define (cml-encrypt value key)  #(let ((v0 (sum-bytes value 0 4)) (v1 (sum-bytes value 4 8)) (k0 (sum-bytes key       0 4))     (k1 (sum-bytes key 4 8))     (k2 (sum-bytes key 8 12))     (k3 (sum-bytes key 12 16)))    (cml-tea v0 v1 k0 k1 k2 k3 k4))#)RESULT: (84941945375 84941945848)[<- 3 ] s|tep n|ext c|ont q|uit > c(84941945375 84941945848)

 

 

转载地址:http://fhtll.baihongyu.com/

你可能感兴趣的文章
安装windows后grub的恢复
查看>>
android学习总结(20120721)
查看>>
安装rrdtool时候的报错configure: error: Please fix the library issues listed above and try again....
查看>>
创建一个10G可用空间的RAID5
查看>>
snmp安装
查看>>
elasticsearch常用操作命令
查看>>
设置sqlplus提示符
查看>>
存储类说明符
查看>>
MySQL 简易序列
查看>>
nginx keepalive
查看>>
Markdown 语法说明
查看>>
CentOS 7.0安装配置LAMP服务器(Apache+PHP+MariaDB)
查看>>
Django 跨表查询--神奇的双下划线和点
查看>>
h3cte D图 搭建
查看>>
Linux 文件基本属性
查看>>
【转】js获取当前指定的前几天的日期(如当前时间的前七天的日期)
查看>>
javascript中对象字面量的理解
查看>>
centos 普通用户获得sudo超级权限
查看>>
Web内容管理系统 Magnolia
查看>>
tmux命令使用总结
查看>>