常用调试技巧系列进阶篇

社区服务
高级搜索
猴岛论坛辅助工具常用调试技巧系列进阶篇
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
0个回复

常用调试技巧系列进阶篇

楼层直达
按键学院

ZxID:61232169

等级: 列兵
举报 只看楼主 使用道具 楼主   发表于: 2015-06-01 0
常用调试技巧系列进阶篇
学会记录脚本运行信息


本文按键学院提供技术支持


按键学院交流①群(1群已满):376122403
按键学院交流②群(2群):372671254
按键学院交流③群(3群):170084238


引用

上一期小编跟大家分享了利用调试里填写关键变量名直接查看输出变量与利用输出语句直接输出相应的调试信息来判断脚本执行到哪一环节出现问题,这种方法简单易用并且主要是用于自己亲自调试脚本,但是如果是脚本长时间运行出错或者是在用户的电脑上出错或者我们希望知道我们不在的时候脚本具体操作了什么,前面的方法肯定是无法适用的,这个时候我们多希望能记录脚本整个的一个输出信息,以供我们查看后进行针对性的纠错~


那有问题来了,有没有方法能记录脚本大概的运行过程,也就是我们平常所说的生成脚本挂机日志呢?方法肯定是有的,今天小编就给大家分享三种记录脚本输出信息以供之后查看脚本运行状态的方法

方法1—WriteFileEx(写入文本文件)

命令名称WriteFileEx 写入文件
命令功能向目标文本文件写入文本内容(注:文本文件是指文件后缀名为.txt的文件)
命令参数参数1 字符串型,目标文件路径
参数2 字符串型,写入文本内容
返 回 值

使用WriteFileEx向某文档写入日志信息的小代码例子


  1. [align=left]
  2. FileName = "C:\脚本日志.txt"//路径和日志名字可自定义[/blockquote]
  3. Call 输出日志("这是第一条测试用的脚本日志")
  4. Delay 1000
  5. Call 输出日志("这是第二条测试用的脚本日志")
  6. Sub 输出日志(内容)
  7.     Call Plugin.File.WriteFileEx(FileName, Now()& ": "&内容)//这边有加上执行该命令相应的系统时间
  8. End Sub[blockquote]


方法2—WriteINI (写入配置文件)

命令名称WriteINI 写入键值
命令功能向配置文件里写一个键值(注:配置文件是指文件后缀名为.INI的文件)
命令参数参数1 字符串型,小节名
参数2 字符串型,键值
参数3 字符串型,写入内容
参数4 字符串型,INI文件路径
返 回 值


  怎么理解命令中的参数:小节名、键值 呢?
        小节名用于分类,例如:要记录很多帐号和密码,那么帐号可以算作一类,密码是一类:
        [帐号]
        [密码]

        键值是类中的成员,例如:第一个帐号,第二个帐号   第一个密码,第二个密码:
        [帐号]
        第一个帐号=123456
        第二个帐号=345678
        [密码]
        第一个密码=111111
        第二个密码=111111

  也不是强制这么分类,小节名和键值的主要作用是为了标识你存放的信息,只要你知道你写入ini文件的时候,把你的信息写到什么位置,下次读取的时候知道在什么位置读取就可以了。


使用WriteINI向某配置文件写入日志信息的小代码例子
  1. FileName = "C:\脚本日志2.ini"//路径和日志名字可自定义[/blockquote]
  2. Call 输出日志("这是第一条测试用的脚本日志")
  3. Delay 1000
  4. Call 输出日志("这是第二条测试用的脚本日志")
  5. Sub 输出日志(内容)
  6.     Call Plugin.File.WriteINI("日志", now, 内容, FileName)
  7. End Sub[blockquote]


方法3—创建FileSystemObject 对象

对于FileSystemObject 对象不大了解的童鞋可参考【院刊】-【201505期】都速度进来找个对象吧~~

使用FileSystemObject 对象向某文件写入日志信息的小代码例子
  1. FileName = "C:\脚本日志3.txt"//路径和名字可自定义[/blockquote]
  2. Set File = CreateObject("Scripting.FileSystemObject")
  3. Set F1 =File.CreateTextFile(FileName,True)
  4. Call 输出日志("这是第一条测试用的脚本日志")
  5. Delay 1000
  6. Call 输出日志("这是第二条测试用的脚本日志")
  7. Sub 输出日志(内容)
  8.     F1.WriteLine (now() & "   " & 内容)
  9. End Sub[blockquote]

分享与拓展

其实按键logstrat命令自带记录日志功能,但是这个命令记录的只能是脚本里的traceprint语句输出的信息,并且受线程的影响,这边就不具体介绍了,有兴趣的童鞋可以参考按键自带的命令帮助,上面写的已经比较清楚了
下面分享一个在qui界面列表框里显示脚本日志,并可以点击按钮保存脚本日志的代码(可能有的童鞋之前已经看过了)
  1. [align=left]Dimenv 日志_最大数量[/align]
  2. Dimenv 日志_当前内容
  3. Dimenv 日志_全部内容
  4. Sub 初始化日志(max)
  5.     日志_最大数量 = max - 1
  6.     日志_当前内容 = ""
  7.     日志_全部内容 = ""
  8. End Sub
  9. Sub 添加日志(text)
  10.     日志_全部内容 = 日志_全部内容 & text & VBCRLF
  11.     If 日志_当前内容 = "" Then
  12.         日志_当前内容 = text
  13.     Else
  14.         日志_当前内容 = 日志_当前内容 & "|" & text
  15.     End If
  16.     日志_临时数组 = Split(日志_当前内容, "|")
  17.     日志_当前内容 = ""
  18.     For i = UBound(日志_临时数组) To UBound(日志_临时数组) - 日志_最大数量 Step - 1
  19.         If i >= 0 Then
  20.             日志_当前内容 = 日志_临时数组(i) & "|" & 日志_当前内容
  21.         End If
  22.     Next
  23.     日志_当前内容 = Left(日志_当前内容, Len(日志_当前内容) - 1)
  24. End Sub
  25. Sub 保存日志(path)
  26.     Dim fso, fobj
  27.     Set fso = CreateObject("scripting.FileSystemObject")
  28.     Set fobj = fso.OpenTextFile(path, 2, True)
  29.     fobj.Write 日志_全部内容
  30.     fobj.Close
  31.     Set fobj = Nothing
  32.     Set fso = Nothing
  33. End Sub


具体是如何运用的呢?大家可以根据自己的需求进行调用啦,
小编这边拉几个控件、写几个控件事件稍微演示下

控件事件
  1. //添加控件进行测试[/blockquote]
  2. Event Form2.Button1.Click
  3.     累加 = 累加 + 1
  4.     添加日志 "这是一条日志," & 累加
  5.     Form2.ListBox1.List = 日志_当前内容
  6. End Event
  7. Event Form2.Load
  8.     Call 初始化日志(5)//这边可以设置显示日志的条数
  9. End Event
  10. Event Form2.Button2.Click
  11.     保存日志 "c:\123.txt"//保存路径及名称可自定义
  12. End Event[blockquote]

演示


今天这期跟大家介绍了把脚本输出信息记录到文档里的几个小方法,下期可能跟大家讲一下如何用大漠写屏命令显示脚本运行信息,新人发帖不容易,望大家多多关照,多回复支持下哈~
另外调试时常出现的几种错误可以参考
【院刊】-【201408期】调试三天,气到吐血的【代码常见错误】
关于ini写入、读取文件的拓展
【院刊】-【201412期】游戏掉线重连-ini写入读取帐号密码

院刊总目录

[ 此帖被按键学院在2015-06-01 16:54重新编辑 ]
« 返回列表
发帖 回复