newlisp debugger

写了很多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)


 

 

转载于:https://www.cnblogs.com/jiangu66/archive/2013/04/06/3003075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值