2011-08-22 6 views
2

Merci à TdwsDebugger je peux déboguer un script complet en utilisant:Delphi Web Script: Comment déboguer un script spécifique Fonction

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

Dans mon cas d'utilisation, je ne lance pas le script entier, mais seulement une fonction de il:

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

Comment puis-je appeler le TdwsDebugger maintenant?

Répondre

1

Vous devez configurer manuellement le débogueur lors de votre exécution (via BeginDebug/EndDebug). Vous pouvez voir un exemple de code dans UDebuggerTests.

Vous pouvez effectuer vos appels avant l'EndDebug.

+1

Je ne comprends pas très bien. 'BeginDebug' exécute tout le programme et le termine. Lorsque j'essaie d'obtenir la fonction via 'Execution.Info.Func ['MyFunction']' plus tard (avant 'EndDebug'), il soulève un AV. 'UDebuggerTests.pas' n'a pas aidé non plus, car il exécute aussi le programme entier (même plusieurs fois). Mon but est de créer un simple IDE avec un débogueur pour parcourir le script ligne par ligne. –

+0

Oui, vous devez exécuter le programme, au moins une fois, car il va initialiser la pile, les variables globales, etc. Bien avant de terminer l'exécution, vous pouvez appeler les fonctions manuellement. Au pire, vous pourriez avoir dans votre programme principal un appel à une seule fonction (et rien d'autre, outre les fonctions utilisateur, ce qui signifie que vous pouvez ajouter cet appel au script de l'utilisateur), et dans le gestionnaire de cette fonction, appelez vos propres fonctions. –

Questions connexes