zoukankan      html  css  js  c++  java
  • 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)


  • 相关阅读:
    jq 换图片路径
    sql 把一列的数据按逗号分隔转换成多行
    sql 数据库查看主外键关联
    sql 表连接 join
    sql 查看 锁定的表 或者 未提交 的事务
    WMI技术介绍和应用——查询硬件信息
    System.Web.HttpContext.Current.Server.MapPath("~/upload/SH") 未将对象引用设置为实例对象
    sql server output用法说明
    merge into 的用法
    JAVA Stop The World 第八节
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3003075.html
Copyright © 2011-2022 走看看