[Ironpython-users] Options for debugger for DLR languages on Mono

Doug Blank doug.blank at gmail.com
Mon Sep 26 19:25:27 CEST 2011


On Mon, Sep 26, 2011 at 12:54 PM, Dino Viehland <dinov at microsoft.com> wrote:
> Do you have a using statement for IronPython.Hosting?  If you add that you should
> get the extension method showing up on ScriptEngine.

I'm using IronPython as the hosting language... does that mean I just
can't get the extensions?

But in any event, is this workaround:

IronPython.Hosting.Python.GetSysModule(engine).settrace(trace)

equivalent?

> As for tracing the hosting level - can you describe what you mean?  Do you have additional
> hosting code written in Python?

Yes, all of the hosting code is written in IronPython. When I use the
workaround above, I get tracing but at my IronPython hosting app
level, not at the level of my script being run. The only way I can get
tracing in my Python script being executed, is by having the set_trace
inside that file.

I'm trying to find a way that I can from outside that script (eg, from
the IronPython hosting app) get tracing on. I can probably write some
of this in C# if I need to, but all of the hosting app is written in
IronPython at the moment.

-Doug

> -----Original Message-----
> From: Doug Blank [mailto:doug.blank at gmail.com]
> Sent: Saturday, September 24, 2011 5:47 PM
> To: Dino Viehland; ironpython-users at python.org
> Subject: Re: [Ironpython-users] Options for debugger for DLR languages on Mono
>
> On Sat, Sep 24, 2011 at 5:09 PM, Dino Viehland <dinov at microsoft.com> wrote:
>> You  should be able to do engine.GetSysModule().settrace(func) and
>> then do the Execute call (this is using C# dynamic to invoke settrace).
>>
>> GetSysModule is an extension method in IronPython.Hosting.
>
> I didn't see GetSysModule for some reason in IronPython 2.7....
> perhaps a Mono issue, or maybe I'm not importing it correctly?
>
> But I was able to:
>
> IronPython.Hosting.Python.GetSysModule(engine).settrace(trace)
> source = engine.CreateScriptSourceFromFile(filename)
> source.Compile()
> source.Execute(scope)
>
> However, it ended up tracing the hosting level, rather than the source. Is that an IronPython issue? Or user error? Is there another way to inject a trace in an execution?
>
> -Doug
>
>>> -----Original Message-----
>>> From: ironpython-users-
>>> bounces+dinov=exchange.microsoft.com at python.org [mailto:ironpython-
>>> users-bounces+dinov=exchange.microsoft.com at python.org] On Behalf Of
>>> Doug Blank
>>> Sent: Saturday, September 24, 2011 10:48 AM
>>> To: Dino Viehland
>>> Cc: ironpython-users at python.org
>>> Subject: Re: [Ironpython-users] Options for debugger for DLR
>>> languages on Mono
>>>
>>> Use of sys.settrace (especially with the bdb.py) makes the Python
>>> debugger really easy. However, I'm having one little issue: I want to
>>> set the trace from outside the running code. Currently, I'm running a Python file like this:
>>>
>>> source = engine.CreateScriptSourceFromFile(filename)
>>> source.Compile()
>>> source.Execute(manager.scope)
>>>
>>> I have a bdb-based debugger that works it I put it the the file, but
>>> I can't figure out how to inject it into the Execution. For example, if I have in the file:
>>>
>>> d.set_trace()
>>> x = 1
>>>
>>> I can trace that. But if I take out the "d.set_trace()" and execute
>>> it any other way in the same scope, it doesn't work.
>>>
>>> How can I get code to run as it it were in the file? Any ideas appreciated!
>>>
>>> -Doug
>>> _______________________________________________
>>> Ironpython-users mailing list
>>> Ironpython-users at python.org
>>> http://mail.python.org/mailman/listinfo/ironpython-users
>>
>>
>
>
>


More information about the Ironpython-users mailing list