德尔福网页脚本:如何调试特定脚本函数

问题描述:

感谢TdwsDebugger我使用可以调试一个完整的脚本:德尔福网页脚本:如何调试特定脚本函数

Debugger := TdwsDebugger.Create(nil); 
Debugger.BeginDebug(Execution); 

在我的使用情况下,我不跑了整个剧本,但只有一个功能它:

var Func: IInfo; 
begin 
    [...] 
    Func := Execution.Info.Func['MyFunction']; 
    Result := Func.Call.Value; 
end; 

我该如何调用TdwsDebugger?

您必须在执行时手动设置调试器(通过BeginDebug/EndDebug)。 你可以在UDebuggerTests中看到一些示例代码。

您可以在EndDebug之前打电话。

+1

我不太明白。 'BeginDebug'运行整个程序并终止它。当我尝试通过'Execution.Info.Func ['MyFunction']'稍后(EndDebug'之前)获取函数时,它会引发一个AV。 'UDebuggerTests.pas'也没有帮助我,因为它也运行整个程序(甚至多次)。我的目标是创建一个带有调试器的简单IDE,逐行执行脚本。 –

+0

是的,您必须至少运行一次程序,因为它会初始化堆栈,全局变量等。虽然在终止执行之前,您可以手动调用函数。 最糟糕的情况是,您可能会在主程序中调用单个函数(除了用户函数外,没有别的,也就是说您可以将该函数附加到用户的脚本中),并且在该函数的处理程序中,您可以调用你自己的功能。 –