调试脚本<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Scripter工作室包含组件和方法允许在程序运行时间调试脚本。主要有2种方法调试脚本:1、使用脚本组件方法和属性;2、使用调试组件。使用方法和属性能留下更多的自由给程序员,并且你可以使用他们建立一个属于你自己的调试环境。使用组件可以进行更高级别的调试,在大多数情况下你只需要拖动一个组件和在开始调试前调动一个方法就行了。
使用调试的方法和属性
脚本组件有几个允许调试脚本的方法和属性,在Delphi代码内你可以按照自己的需要使用他们,他们的列表在下面:
property Running: boolean;
读/写属性,当正在执行脚本的时候,Running是True。注意脚本可以暂停,但它仍然在运行,设置Running属性为True与调用Execute方法的效果一样。
property Paused: boolean read GetPaused write SetPaused;
读/写属性,使用它可以暂停脚本运行或取得脚本运行的状态。
procedure DebugTraceIntoLine;
执行当前行,如果当前行包含一个子程序调用,执行指针转到子程序的第一行。
procedure DebugStepOverLine;
执行当前行和执行指针转到下一行代码,如果当前行包含一个子程序调用,它运行完整个子程序,和Delphi中的Step Over选项相似。
procedure DebugRunUntilReturn;
执行代码直到当前子程序(过程、函数或主脚本块)是完成,执行指针停止在调用子程序的下一行。
procedure DebugRunToLine(ALine:integer);
执行脚本直到指定行,类似于Delphi的Run to Cursor选项。
function DebugToggleBreakLine(ALine:integer):pSimplifiedCode;
激活/禁止一个指定行的断点,如果断点设置是True,执行停止在断点所设置的行。
function DebugExecutionLine:integer;
返回调试行的计数值。
procedure Halt;
停止脚本执行,不管执行指针在那里。
property Halted: boolean read GetHalted;
在调用Halt方法或脚本已经停止后,该属性返回True。
property BreakPoints: TatScriptBreakPoints read GetBreakPoints;
包含脚本中设置的断点,你可以使用Items[Index]属性或者BreakPointByLine(ALine: integer)方法访问断点,一旦你访问断点,你可以设置属性Enabled(如果断点是活跃的,就会显示出来)和PassCount(它显示有多少次执行经过断点,直到执行结束)。
property OnDebugHook: TNotifyEvent read GetOnDebugHook write SetOnDebugHook;
在调试期间(step over,step into等等),每执行一行都会调用OnDebugHook事件。
property OnPauseChanged: TNotifyEvent read GetOnPauseChanged write SetOnPauseChanged;
property OnRunningChanged: TNotifyEvent read GetOnRunningChanged write SetOnRunningChanged;
只要paused或running属性改变,事件都会被调用。
使用调试组件
Scripter工作室有一个特定的调试组件,它是TatScriptDebugDlg,它的使用非常简单:拖动它到窗口上和访问它的Scripter属性在一个存在的脚本组件,调用Execute方法和debug对话框将出现,显示脚本源代码和一个工具条出现在窗口顶端,你可以使用工具条上的按钮或快捷键执行调试行为(run, pause, step over, and so on),快捷键和Delphi的一样。
F4 – Run to cursor
F5 – Toggle breakpoint
F7 – Step into
F8 – Step Over
F9 – Run
Shift+F9 - Pause
Ctrl+F2 – Reset
Shift+F11 – Run until return