Debugging IR

Hi all,

I’ve been following IR since pre-alpha and have enjoyed being able to
play with .NET within Ruby. Since the beginning, the one thing that
I’ve been most looking forward to has been debugging. I’ve seen that
some debugging might already be in the current SVN rev (a blog post by
John & I think revision notes too). Is this true? If so, how can I
debug ruby code? I’m using VS 2008.

Thanks for any help,
Noon

Jeff Siebold:

I’ve been following IR since pre-alpha and have enjoyed being able to
play with .NET within Ruby. Since the beginning, the one thing that
I’ve been most looking forward to has been debugging. I’ve seen that
some debugging might already be in the current SVN rev (a blog post by
John & I think revision notes too). Is this true? If so, how can I
debug ruby code? I’m using VS 2008.

Debugging support works today in Silverlight as long as you have the
Silverlight tools for VS installed. It should just work on desktop CLR
as well.

Now ‘just work’ means that our source spans aren’t defined precisely
which means that stepping over individual statements and in conditionals
is, um, weird. But it does hit breakpoints and show locals and the call
stack correctly, but I wouldn’t really use it for real until we fix how
we generate sequence points.

Thanks,
-John

“It should just work” means you open IronRuby.sln, the Ruby source file
you want to debug, place a breakpoint and run Ruby.Console project with
the source file path on the command line.

Tomas

I have been embedding IronRuby to our WPF C# application, so I am not
starting rbx but rather doing calls like:

MyEngine.CreateScriptSourceFromFile(“MyRuby.rb”).Execute(MyScope);

Any hope for me to get to use the nice new debugging goodies? :slight_smile: I did
install the silverlight VS extension, included MyRuby.rb to my C#
project and placed breakpoint there, but that did not seem to be enough
to have execution stopping there :frowning:

Robert B.

You have to explicitly tell the DLR to generate “debuggable” code.

ScriptRuntime env = ScriptRuntime.Create(setup);
env.GlobalOptions.DebugMode = true;
ScriptEngine MyEngine = env.GetEngineByFileExtension(“rb”);
// …
MyEngine.CreateScriptSourceFromFile(“MyRuby.rb”).Execute(MyScope);

Disclaimer: compiled by brain =P

~js

On 3/31/08 12:44 AM, “Robert B.” [email protected]
wrote:

I have been embedding IronRuby to our WPF C# application, so I am not
starting rbx but rather doing calls like:

MyEngine.CreateScriptSourceFromFile(“MyRuby.rb”).Execute(MyScope);

Any hope for me to get to use the nice new debugging goodies? :slight_smile: I did
install the silverlight VS extension, included MyRuby.rb to my C#
project and placed breakpoint there, but that did not seem to be enough
to have execution stopping there :frowning:

Robert B.

This is working fine, thanks!

Weird spans and conditionals are a minor issue compared to the pain of
no debugging at all :slight_smile:

John:

But it does hit breakpoints and show locals and the call stack
correctly

Regarding the local variables I did not see any directly in the “Locals”
table of Visual Studio, but I was able to dig them up from $frame →
Scope → Dict → SymbolAttributes

Robert B.
Software architect
Napa Ltd
Email: [email protected] mailto:[email protected]
www.napa.fi http://www.napa.fi/


From: [email protected]
[mailto:[email protected]] On Behalf Of Jimmy
Schementi
Sent: 31. maaliskuuta 2008 13:31
To: [email protected]
Subject: Re: [Ironruby-core] debugging IR

You have to explicitly tell the DLR to generate “debuggable” code.

ScriptRuntime env = ScriptRuntime.Create(setup);
env.GlobalOptions.DebugMode = true;
ScriptEngine MyEngine = env.GetEngineByFileExtension(“rb”);
// …
MyEngine.CreateScriptSourceFromFile(“MyRuby.rb”).Execute(MyScope);

Disclaimer: compiled by brain =P

~js

On 3/31/08 12:44 AM, “Robert B.” [email protected]
wrote:

I have been embedding IronRuby to our WPF C# application, so I
am not
starting rbx but rather doing calls like:

MyEngine.CreateScriptSourceFromFile(“MyRuby.rb”).Execute(MyScope);

Any hope for me to get to use the nice new debugging goodies?
:slight_smile: I did
install the silverlight VS extension, included MyRuby.rb to my
C#
project and placed breakpoint there, but that did not seem to be
enough
to have execution stopping there :frowning:

Robert B.

-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of John
Lam (DLR)
Sent: Thursday, March 27, 2008 6:47 PM
To: [email protected]
Subject: Re: [Ironruby-core] debugging IR

Debugging support works today in Silverlight as long as you have
the
Silverlight tools for VS installed. It should just work on
desktop CLR
as well.

Now ‘just work’ means that our source spans aren’t defined
precisely
which means that stepping over individual statements and in
conditionals
is, um, weird. But it does hit breakpoints and show locals and
the call
stack correctly, but I wouldn’t really use it for real until we
fix how
we generate sequence points.

Thanks,
-John

Regarding the local variables I did not see any directly in the
“Locals”
table of Visual Studio, but I was able to dig them up from $frame ->
Scope -> Dict -> SymbolAttributes

Ah yes- I think this is Tomas’ fault due to his latest change in local
scopes that are part of the work required to get eval and friends
working. I’ll let him defend himself here :slight_smile:

Thanks,
-John

No defense available :slight_smile: More changes coming soon.

Tomas

I return to this debugging issue briefly since in the recent IronRuby
SVN versions the variable viewing support has been on decline.

John L. (DLR) Sent: Thursday, March 27, 2008 6:47 PM:

Debugging support works today in Silverlight as long as you have the
Silverlight tools for VS installed. It should just work on desktop CLR
as well.
Now ‘just work’ means […] it does hit breakpoints and show locals
and the call
stack correctly

Robert B. wrote 2008-04-02:

This is working fine, thanks!
Weird spans and conditionals are a minor issue compared to the pain of
no debugging at all :slight_smile:
Regarding the local variables I did not see any directly in the
“Locals” table of Visual Studio,
but I was able to dig them up from $frame → Scope → Dict →
SymbolAttributes

Now that was the situation with the IronRuby SVN current version of
2008-04-02 (can’t remember the number).

Things have been taking a slight step backwards with the recent SVN
versions (at least already in v. 96). Now it seems that $frame->Scope is
always null, so I cannot dig the locals from there (nor are they yet
available as top-level symbols either) :frowning:

I understand debugging is not a priority of the IR team, but I wonder if
it would be a quick fix to restore the locals to be visible in some
way, direct or indirect? Or alternatively tell me how to dig them up
with the v. 99?

Robert B.
Software architect
Napa Ltd
Tammasaarenkatu 3, Helsinki FI-00180
P.O.Box 470, Helsinki FI-00181

Tel. +358 9 22 813 1
Direct. +358 9 22 813 611
GSM +358 45 11 456 02
Fax. +358 9 22 813 800

Email: [email protected]