Веб-скрипт Delphi: отладка конкретной функции скрипта

Благодаря TdwsDebugger я могу отладить полный скрипт, используя:

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

В моем случае я запускаю не весь скрипт, а только его функцию:

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

Как мне теперь вызвать TdwsDebugger?


person Steffen Binas    schedule 22.08.2011    source источник


Ответы (1)


Вы должны вручную настроить отладчик при выполнении (через BeginDebug/EndDebug). Вы можете увидеть пример кода в UDebuggerTests.

Вы можете совершать звонки до EndDebug.

person Eric Grange    schedule 23.08.2011
comment
Я не совсем понимаю. BeginDebug запускает всю программу и завершает ее. Когда я пытаюсь получить функцию через Execution.Info.Func['MyFunction'] позже (до EndDebug), она поднимает AV. UDebuggerTests.pas мне тоже не помог, так как он также запускает всю программу (даже несколько раз). Моя цель — создать простую IDE с отладчиком, чтобы выполнять скрипт построчно. - person Steffen Binas; 23.08.2011
comment
Да, вы должны запустить программу хотя бы один раз, так как она инициализирует стек, глобальные переменные и т. д. Хотя перед прекращением выполнения вы можете вызывать функции вручную. В худшем случае у вас может быть в вашей основной программе вызов одной функции (и ничего другого, кроме пользовательских функций, то есть вы можете добавить этот вызов к пользовательскому скрипту), а в обработчике этой функции вы можете вызвать ваши собственные функции. - person Eric Grange; 23.08.2011