step through .py file in a .NET application written in C# in Visual Studio

B

Bo

Hello All,

I am experimenting IronPython in Visual Studio. Here is what I have,
what I did and what I want

1. I have installed Visual Studio SDK 4.0 according to this blog
http://blogs.msdn.com/aaronmar/archive/2006/02/16/a-bit-more-on-ironpython.aspx

If I run Visual Studio under Experimental Hive, a Python file opened
is color coded.

2. Also, my computer has apparently installed some IronPython DLL
because my Visual Studio can recoginize the following class:
IronPython.Hosting.PythonEngine.

If I declare something like the following in Visual Studio:

public static class MyPythonClass {
private static IronPython.Hosting.PythonEngine MY_ENGINE;
//suppose I have created an instance of PhythonEngine and assigned
to MY_ENGINE
............
}

If I do "Go to Definition" of PythonEngine, I can navigate to the
Definition of PythonEngine, but it is from MetaData.

3. In my .NET application (written in C#) , I can invoke the
execution of an external python file using something like:
MyPythonClass.MY_ENGINE.ExecuteFile("myPythonFileWithAbsolutePath.py")

The python file (myPythonFileWithAbsolutePath.py) can be executed all
right, but I want to step through it to debug it. Any suggestions on
how to do it?

Thanks a bunch.

Bo
 
P

Paul McGuire

Hello All,

I am experimenting IronPython in Visual Studio. Here is what I have,
what I did and what I want

1. I have installed Visual Studio SDK 4.0 according to this bloghttp://blogs.msdn.com/aaronmar/archive/2006/02/16/a-bit-more-on-ironp...

If I run Visual Studio under Experimental Hive, a Python file opened
is color coded.

2. Also, my computer has apparently installed some IronPython DLL
because my Visual Studio can recoginize the following class:
IronPython.Hosting.PythonEngine.

If I declare something like the following in Visual Studio:

public static class MyPythonClass {
private static IronPython.Hosting.PythonEngine MY_ENGINE;
//suppose I have created an instance of PhythonEngine and assigned
to MY_ENGINE
............

}

If I do "Go to Definition" of PythonEngine, I can navigate to the
Definition of PythonEngine, but it is from MetaData.

3. In my .NET application (written in C#) , I can invoke the
execution of an external python file using something like:
MyPythonClass.MY_ENGINE.ExecuteFile("myPythonFileWithAbsolutePath.py")

The python file (myPythonFileWithAbsolutePath.py) can be executed all
right, but I want to step through it to debug it. Any suggestions on
how to do it?

Thanks a bunch.

Bo

Um, make sure you compile with debug?

I have coded in Boo, which is very Python-like, and it will step
through the debugger just fine, so IP should do the same in theory.
But I've not used IP, so all I can give are generic "are you sure it's
plugged in?" type of suggestions.

Hmm, upon rereading your post, I see that you want the debugger to
step through a separate file that was executed using ExecuteFile.
Unless there are some debug options on ExecuteFile, I'd say your
chances are slim, since the file being executed is not really part of
the image being debugged. You could also try explicitly invoking the
debugger from within the file that you are loading, using (this works
from Boo):

System.Diagnostics.Debugger.Launch()
System.Diagnostics.Debugger.Break()


-- Paul
 
J

jingwu.mail

Um, make sure you compile with debug?

I have coded in Boo, which is veryPython-like, and it will step
through the debugger just fine, so IP should do the same in theory.
But I've not used IP, so all I can give are generic "are you sure it's
plugged in?" type of suggestions.

Hmm, upon rereading your post, I see that you want the debugger to
step through a separate file that was executed using ExecuteFile.
Unless there are some debug options on ExecuteFile, I'd say your
chances are slim, since the file being executed is not really part of
the image being debugged. You could also try explicitly invoking the
debugger from within the file that you are loading, using (this works
from Boo):

System.Diagnostics.Debugger.Launch()
System.Diagnostics.Debugger.Break()

-- Paul


Thanks Paul, for giving me the suggestions. I will try your
suggestion.

I have been struggling with the most of today. Here is a summary of
what I have found. May be useful to other

1. My IronPython DLL is version 1.1. It is download here
http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython

2. Apparently, there is a problem with either the ipy.exe or
IronPython.DLL that one cannot step into a function (F11 in visual
studio). Here is the discussion
http://lists.ironpython.com/pipermail/users-ironpython.com/2007-May/004957.html

I am not sure if this is related to my case.

3. Here is Jim Hugunin's presentation
http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/20051110PythonJH/manifest.xml

Apparently, he can step through the external ironpython file in an C#
application. He probably used an old version of Iron Python. The
method he used to execute the external iron python file is
Engine.Runfile()
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,586
Members
45,097
Latest member
RayE496148

Latest Threads

Top