ironpython使用dictionary,在托管(嵌入式)环境中调试IronPython脚本

I'm writing a C# application which has IronPython (2.0.1) embedded in it. The idea is to expose portions of the application to the IronPython scripts, which the users write.

I want to provide the ability to the users to be able to debug the scripts written by them, using the Visual Studio Debugger. Note that the scripts are run in the hosted environment and not through the IronPython executable (ipy.exe).

After a bit of Reflector magic on the IronPython assemblies, I came up with something which lets me do that, but I'm not sure if this is the prescribed way. Basically what I do is create a "ScriptRuntime" object with the "DebugMode" property set to true and then create a python based "ScriptEngine" from the "ScriptRuntime", which I use for hosting. Code below.

ScriptRuntimeSetup setup = new ScriptRuntimeSetup();

setup.DebugMode = true;

setup.LanguageSetups.Add(Python.CreateLanguageSetup(null));

ScriptRuntime runtime = new ScriptRuntime(setup);

ScriptEngine engine = runtime.GetEngineByTypeName(typeof(PythonContext).AssemblyQualifiedName);

Now when I execute the scripts in the hosted environment, using:

ScriptSource script = engine.CreateScriptSourceFromFile(path);

CompiledCode code = script.Compile();

ScriptScope scope = engine.CreateScope();

script.Execute(scope);

I can place breakpoints in the script files and they get hit, when the script is executed.

So, is there a better/easier way to do this?

Thanks

解决方案

OK, got it. There is an options dictionary which "Python.CreateEngine" can take as an argument. One can specify the debug mode in that.

Dictionary options = new Dictionary();

options["Debug"] = true;

engine = Python.CreateEngine(options);

I think this is straightforward enough.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值