# Debugging IR

**URL:** <https://www.ruby-forum.com/t/debugging-ir/133077>\
**Category:** IronRuby\
**Created:** [March 27, 2008, 2:12pm UTC](https://www.ruby-forum.com/t/debugging-ir/133077 "2008-03-27T14:12:42Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [March 27, 2008, 2:12pm UTC](https://www.ruby-forum.com/t/debugging-ir/133077/1 "2008-03-27T14:12:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [March 28, 2008, 2:48am UTC](https://www.ruby-forum.com/t/debugging-ir/133077/2 "2008-03-28T02:48:17Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [March 28, 2008, 3:27am UTC](https://www.ruby-forum.com/t/debugging-ir/133077/3 "2008-03-28T03:27:32Z")

</div>

“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

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [March 31, 2008, 9:45am UTC](https://www.ruby-forum.com/t/debugging-ir/133077/4 "2008-03-31T09:45:45Z")

</div>

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? 🙂 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 ☹

Robert B.

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [March 31, 2008, 12:31pm UTC](https://www.ruby-forum.com/t/debugging-ir/133077/5 "2008-03-31T12:31:37Z")

</div>

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.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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? 🙂 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 ☹

Robert B.

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [April 2, 2008, 12:10pm UTC](https://www.ruby-forum.com/t/debugging-ir/133077/6 "2008-04-02T12:10:37Z")

</div>

This is working fine, thanks!

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

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: removed\_email\_address@domain.invalid [mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
[www.napa.fi](http://www.napa.fi) [http://www.napa.fi/](http://www.napa.fi/)

* * *

From: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Jimmy  
Schementi  
Sent: 31. maaliskuuta 2008 13:31  
To: removed\_email\_address@domain.invalid  
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.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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?  
🙂 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 ☹

Robert B.

-----Original Message-----  
From: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of John  
Lam (DLR)  
Sent: Thursday, March 27, 2008 6:47 PM  
To: removed\_email\_address@domain.invalid  
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

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [April 2, 2008, 3:37pm UTC](https://www.ruby-forum.com/t/debugging-ir/133077/7 "2008-04-02T15:37:49Z")

</div>

> 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 🙂

Thanks,  
-John

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [April 2, 2008, 7:01pm UTC](https://www.ruby-forum.com/t/debugging-ir/133077/8 "2008-04-02T19:01:36Z")

</div>

No defense available 🙂 More changes coming soon.

Tomas

---

<div class="post-metadata">

**Author:** ![sprsquish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/d9b06d/32.png) [@sprsquish](https://www.ruby-forum.com/u/sprsquish)\
**Post date:** [May 6, 2008, 8:01am UTC](https://www.ruby-forum.com/t/debugging-ir/133077/9 "2008-05-06T08:01:47Z")

</div>

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 🙂  
> 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) ☹

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: removed\_email\_address@domain.invalid

> **[Home – NAPA](https://www.napa.fi/)**
>
> NAPA provides intelligent solutions for maritime industry: Software, Services and Data Analysis for Ship Design and Operation. We combine naval architecture, shipping and digital expertise to help maritime business make the decisions that matter.
