T086学习网 | 站长学院 | 技术文档 | 成语 | 歇后语 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论 | 欣欣百宝箱

脚本的故事(2004年9月)

【 Microsoft TechNet作者:脚本专家 更新时间:2006-05-09 | 字体:
[导读]脚本的故事 2004 年 9 月 虫子爬进来了,但却赖着不走 启动 Script Debugger 分步执行代码 最后一步 设置和删除断点 处理变量 运行脚本命令 脚本专家的绝学秘笈 结束语 虫子爬进来了,但却赖着不走 我们都曾听说过海...

分步执行代码

举一个软件的例子,Microsoft Word 是一个事件驱动的应用程序。在启动 Word 时,它不执行任何操作;它只是静静地等待事件的发生,等待您单击鼠标按钮或按键盘上的键或者执行某种操作。(当然了,如果等待时间过长,即使在您执行某种操作之后,它也不会做出任何响应,但这已超出了本文讨论的范围。)

与之相比,脚本通常是过程驱动的:在启动后,它们通常并不等待事件发生,而是直接运行。在脚本启动后,它运行第一行代码,然后(甚至没有停下来“喘口气”)开始运行其余的代码行,整个过程一蹴而就。在运行完代码行后,脚本就会自动终止。

只要一切正常,这就是一种很好的模型。然而,如果执行情况与计划的情况不完全一致时,此模型就会中止一段时间。例如,假定有一个用于完成以下任务的脚本:

?

在本地计算机上创建一个文本文件。

?

从几个服务器中检索硬件信息。

?

将检索到的信息写入所创建的文本文件中。

?

将该文本文件从本地计算机复制到远程计算机上。

?

从本地计算机上删除该文本文件。

您运行该脚本,一眨眼的功夫,脚本就完成了它的任务。您检查本地计算机,没有文本文件。这很正常呀!毕竟,脚本就是应该从本地计算机上删除文本文件。现在,检查一下远程计算机:也没有文本文件。麻烦了!显然,出现了问题,但到底出现了什么问题,问题出在哪里呢?即使这是一个相对简单的脚本,脚本也可能会在很多地方出现错误。我怎么能知道问题到底出在哪里呢?

注意。 我们假定此脚本中包含防止脚本崩溃的 On Error Resume Next。但要记住,即使删除 On Error Resume Next 也不一定能找出实际发生错误的确切位置。请考虑下面的简单脚本:

intMyNumber = 2
A = intMyNumbr
B = 3
C = B / A

如果您运行此脚本,就会在第 4 行出现错误,这是因为除数为 0。但实际上问题并不是出在第 4 行,问题实际出在第 2 行,您在该行中将变量 A 设置为 0 而不是 2。这是由于拼写错误造成的:您为 A 分配 intNumbr 的值而不是 intNumber 的值。因为 intNumbr 没有 值,所以将 A 赋值为 0,而不是您希望分配的 2。

不可否认,这是一个很容易找出来的错误。但问题的关键是,在脚本崩溃时显示的错误信息只告诉您错误在哪一行中显现了出来;也就是说代码中的错误在哪一行中实际引发了错误。错误的根本原因(如将变量设置为 0)可能在数百行代码之前就已经存在了。

处理此类问题的一种方法是使用 Script Debugger 来“分步执行”代码。分步执行代码即逐行运行脚本。不可否认,如果脚本很长,这可能会是一项冗长而乏味的工作;不过,我们一会将向您介绍一种解决方法。另一方面,通过分步执行代码,您可以在每一步停下来并确保脚本正常工作。

例如,我们假定的脚本在运行时首先应该创建一个文本文件。在我们按原样运行脚本时,我们不知道是否在第一个地方创建了文本文件。但通过分步执行代码,我们就可以非常方便地验证这一点。我们运行将创建文本文件的代码行,然后停止。随后,我们打开 Windows 资源管理器并检查文本文件是否存在。如果文件存在,则继续分步执行脚本的其余部分。如果文件不存在,则我们就已找到了一处错误。

那怎么在 Script Debugger 中分步执行代码呢?实际上这是非常容易的:在调试器中装载脚本,然后按 F8 键。每次按 F8 键时,调试器将执行一行代码,跳到 一行代码,然后等待您再次按 F8 键。(顺便说一句,如果您不喜欢使用键盘,您也可以从 Debug(调试)菜单中选择 Step Into(单步执行))。一直按 F8 键,直至到达脚本的结尾。您也可以从当前行开始运行脚本的其余部分。为此,请按 F5 键或者从 Debug 菜单中选择 Run(运行)。

警告。 假定您调试的脚本从事件日志中检索事件,并且假定这些事件日志中有 5,000 个事件。在分步执行使用 For Each 循环的代码时一定要小心;脚本不只运行该循环一次,它将运行 5,000 次,为集合中的每一项分别运行一次。对于此类情况,您可能只需要运行循环一次或两次(只为确认循环运行是否正常),然后按 F5 键以运行脚本的其余部分。或者,您也可能需要使用断点,我们稍后将对其进行介绍。

上一页 [1] [2] 3 [4] [5] [6] [7] [8] [9] 下一页
  • 转载请注明来源:IT学习网 网址:http://www.t086.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
更多
留言建议ASP探针PHP探针站长Enjoy的Blog
© 2017 T086学习网 - T086.com(原itlearner.com)
RunTime:12.07ms QueryTime:7