转自: http://www.microsoft.com/china/msdn/archives/library/techart/odc_moddebugsql.asp
Amit Chopra, Brent Williams
Microsoft Corporation
2001 年 3 月
应用于:
Microsoft® Office XP Developer
摘要:本文介绍 SQL 工作流应用程序的开发人员如何使用 Microsoft Office XP 中所带的 Microsoft 脚本调试程序来提高 Workflow Service for SQL Server 的调试功能。
目录简介
安装所需软件
调试工作流应用程序
附加到已在执行的代码
简介开发人员(在需要时)调试代码的速度快慢在很大程度上决定着快速部署解决方案的能力。Microsoft Office XP Developer 并不具有集成的调试程序;然而,您可以使用"即时调试"进程来调试事件脚本所使用的 Microsoft® Visual Basic® Scripting Edition (VBScript)。
本文介绍的进程存在某些局限性,例如必须在安装工作流服务的同一台计算机上进行调试,并需要切换回 Microsoft Office XP 开发环境以更改代码。虽然存在着这些限制,您仍将发现这极有助于提高您对 SQL 工作流事件脚本的调试能力,并能高效地部署 SQL 工作流应用程序。
安装所需软件要成功调试 SQL 工作流应用程序中的脚本,需要首先在运行 SQL 工作流服务的服务器上安装 Microsoft 脚本编辑器 (MSE)。
要安装 MSE,必须在该计算机上安装 Office 应用程序,如 Microsoft Word 2002。安装 Word 2002 后,打开"工具"菜单,指向"宏",然后单击"Microsoft 脚本编辑器"。
如果未安装该选件,系统将提示您安装该程序。按照要求安装 Microsoft 脚本编辑器 (MSE)。随后,可以使用 ALT+SHIFT+F11 从任意 Microsoft Office XP 应用程序快速启动 MSE。
启动 MSE 后,从菜单栏选择"调试"选项。该选项下有一个菜单项,名为"安装 Web 调试程序"。此菜单项只在初次运行时显示。随后,将显示调试选项。这些将在本文后面进行讨论。
注意:安装 Web 调试组件后需要重新启动 MSE。在出现重新启动 MSE 的提示后,单击"是"按钮。如果需要,可以手动地重新启动 MSE,方法是在任意 Office XP 应用程序中按 ALT+SHIFT+F11;您还可以搜索文件 mse7.exe,然后直接执行该文件。
要验证是否已安装 Web 调试程序,请单击"调试"菜单项;选项列表随即应显示各项,如"开始"、"进程"等。
要使 MSE 调试程序捕获脚本错误,您必须启用 JIT 选项。
要启用 JIT 选项来捕获脚本错误,请执行以下操作:
注意:建议将工作流进程作为单独进程来运行。要实现此目的,可以在 Microsoft Office XP Developer 开发环境中将工作流的 SeparateProcess 属性更改为 True。
有了工作流应用程序后,将以下脚本添加到 Sub Create1_OnCreate:
Dim intADim intBDim intCintA = 5intB = 10intA = intA - 5intC = intB / intA此代码的作用是模拟除零错误,这种错误通常导致脚本运行失败,并使您无法进行进一步的操作。现在按照这些步骤来模拟错误如何发生以及如何进行调试:
单击"确定"后,调试程序将显示错误消息"Microsoft VBScript runtime error: Division by zero"(Microsoft VBScript 发生运行时错误:除数为零),并显示"中断"和"继续"按钮。您会看到在编辑器中装载了 SQL 工作流事件脚本。还可看到导致该错误的脚本行。
这将显示该计算机当前运行的所有进程的列表。
注意:脚本引擎必须已在运行,才能显示在此列表中。必须至少对该脚本引擎进行一次调用,脚本引擎才会运行。如果它未出现在列表中,则需执行一次工作流操作,如添加记录或更改状态,以便触发事件脚本。
这可确保一旦执行了任何代码,它都将中断于调试程序。这适用于任何代码,不管有无错误。此功能非常有用,因为一旦事件代码开始执行,调试程序就将停止该代码。开发人员就可以逐步进行检查,查看各步骤的顺序以及变量值,并捕获任何脚本错误。
这次您可能会注意到有所不同。"脚本调试程序"启动更加迅速,并在代码的第一行中断运行。然后,您就可以根据 MSE 调试程序所提供的"步骤"选项来控制代码流。
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=508542