Debugging Iron Python hosted in a C# application?

Mar 14, 2011 at 2:44 PM

Is it possible to use PTVS for debugging scripts running in Iron Python hosted in a C# application?

Editor
Mar 14, 2011 at 11:42 PM

If you're hosting an entire IronPython interpreter this should be doable (as should an entire CPython interpreter hosted inside a C++ application). We'll update with detailed instructions once we've figured out how to do it.

If you've compiled the IronPython down into a library you're probably out of luck.

Mar 15, 2011 at 9:24 AM
Edited Mar 15, 2011 at 9:28 AM

What do you mean by "hosting an entire IronPython interpreter"? Calling out to a separate interpreter process like this:

Start.Process("ipy.exe", "hello.py")

? (That would not really help us.)

And by "If you've compiled the IronPython down into a library"? Would using the official IronPython.dll etc. fall in that category?

var engine = IronPython.Hosting.Python.CreateEngine();
engine.Execute("hello.py");

That could never work with PTVS? (Too bad. That would really help us!)

Mar 16, 2011 at 6:17 PM

You can try to use Debug - > Attach to Process...

Coordinator
Mar 17, 2011 at 12:46 AM

You'll need to setup debug mode on the ScriptRuntime (which can be set on the ScriptRuntimeSetup object) in order for the Python code to be debuggable.  Once you do that Attach to Process w/ .NET debugging should work.

Mar 17, 2011 at 12:40 PM

Thanks for the hint.


var
engine = IronPython.Hosting.Python.CreateEngine(new Dictionary<string, object>() { { "Debug", true } });
engine.ExecuteFile("hello.py");
This also enables the ScriptRuntime DebugMode, and I can debug hello.py while the debugger is attached to the C# project. Very cool!