代码调试——调试信息、变量和调用堆栈
2017-10-26 16:14:51

刚开始做脚本的开发者可能会有这样的疑惑,就是调试代码的时候不知道脚本运行到哪里了,如果出错了也不知道该从哪里找起,非常麻烦。


现在来了解如何使用调试信息、变量和调用堆栈三个监控窗口轻松解决这个问题。


首先认识一下三个窗口:

图片.png


  1. 调试信息

    这个区域会显示脚本的运行状态信息、错误信息以及lua自带print或是叉叉提供的sysLog打印的内容。

    合理使用sysLog可以更了解脚本进行的步骤,以及运行的状态。

    例如,找色一次,找到了或没找到,分别用sysLog提示:

    x, y = findColor({84, 252, 1194, 1967},
      "684|955|0xc5a166,693|925|0xf1e5c7,668|946|0xa81303,722|946|0xa01103",
      95, 0, 0, 0)
    sysLog('寻找宝箱')
    if x > -1 then
      sysLog("找到了")
    else
      sysLog("没找到")
    end

    这样的写法我们就可以随时知道这次找色有没有成功,代码运行是否正确啦。

    例如,没找到:

    图片.png

    另外,代码的语法错误等问题,也会在这个区域提示出来,调试代码的时候要多多关注哦。


  2. 调用堆栈和变量


    开始调试之前,我们现在需要暂停的代码行上打上断点:

    点击红圈位置就会增加一个蓝色的小块,代表这里在调试中会暂停,再点一次可以取消这个断点。

    图片.png

    设定好断点之后,点击【调试】按钮进入调试模式,这时候右侧功能区会自动切换到调用堆栈一栏。

    图片.png

    然后点击【继续/continue】按钮即可开始单步调试,脚本运行将会停在设置了断点的位置。

    图片.png

    代码区域,暂停所在行的背景色会变成红色,此时变量区域和调用堆栈区域都会显示此时的实时信息:

    图片.png

    例如上图就表示:

    代码运行到第五行,此时变量5的值是5,b的值是6,由于此时还没有执行a = b - 2,所以仍然是5;

    调用堆栈的查看方法是由下往上看,意思是16行执行了入口函数first,然后跳到first函数所在第5行;

    点击【继续/continue】,让脚本继续下一步:

    图片.png

    这时候我们可以看出,执行了a = b -2 之后,变量a的值已经变成了4,上一行没有对b进行操作,那么b还是6。

    继续往下走两步看看?

    图片.png

    这个时候已经离开了first函数,它里面的本地变量的值已经不能显示了,所以变量的区域内是没有内容的;

    同时我们也可以看到调用堆栈区域多了一行[second] at line 11(defined at main.lua:9)

    意思是first函数在第6行调用了second函数,此时second函数运行到了第11行。

    点击【继续/continue】,出现了函数second内的本地变量c的值。

    图片.png

    讲到这里大家应该比较理解这几个窗口负责的工作啦,可以利用这些监控特性更好地检测脚本内各种变量的变化,定位在开发中遇到的各种问题哦!




    脚本调试方面的进阶技能请期待我们更多课程~


    欢迎加入叉叉脚本学习交流群与大神们共同探讨喔!QQ群号: 496130919 点此加群