Debugging ruby code in a host

Hi

With my IronRubyMVC implementation I’m far enough to figure out that I
need
to be able to put breakpoints in my ruby code :slight_smile:
Now the question is how, because I think I tried all of the ways that
are
described in the wiki but had no success. I have a debug version of
IronRuby
and I’m using it in a C# ASP.NET MVC project with the
System.Web.Mvc.IronRuby dll as a reference. The web application hosts
the
scriptruntime etc. Now what do I need to do to make visual studio break
on
the breakpoint I define?

In merging the latest git pushes into the linux branch I’ve seen a pdb
generator does that mean I can actually get to more meaningful stack
traces
etc. again the question how springs to mind? :slight_smile:

Thanks
Ivan

Is DebugMode property of the ScriptRuntimeSetup of the ScriptRuntime you
run the script in set to true?

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Ivan Porto
Carrero
Sent: Monday, March 23, 2009 12:32 PM
To: ironruby-core
Subject: [Ironruby-core] Debugging ruby code in a host

Hi

With my IronRubyMVC implementation I’m far enough to figure out that I
need to be able to put breakpoints in my ruby code :slight_smile:
Now the question is how, because I think I tried all of the ways that
are described in the wiki but had no success. I have a debug version of
IronRuby and I’m using it in a C# ASP.NEThttp://ASP.NET MVC project
with the System.Web.Mvc.IronRuby dll as a reference. The web application
hosts the scriptruntime etc. Now what do I need to do to make visual
studio break on the breakpoint I define?

In merging the latest git pushes into the linux branch I’ve seen a pdb
generator does that mean I can actually get to more meaningful stack
traces etc. again the question how springs to mind? :slight_smile:

Thanks
Ivan

When you create the ScriptRuntimeSetup, do this:

setup.Debug = true;

That will tell the DLR to generate debuggable code.


From: [email protected]
[[email protected]] on behalf of Ivan Porto C.
[[email protected]]
Sent: Monday, March 23, 2009 12:32 PM
To: ironruby-core
Subject: [Ironruby-core] Debugging ruby code in a host

Hi

With my IronRubyMVC implementation I’m far enough to figure out that I
need to be able to put breakpoints in my ruby code :slight_smile:
Now the question is how, because I think I tried all of the ways that
are described in the wiki but had no success. I have a debug version of
IronRuby and I’m using it in a C# ASP.NEThttp://ASP.NET MVC project
with the System.Web.Mvc.IronRuby dll as a reference. The web application
hosts the scriptruntime etc. Now what do I need to do to make visual
studio break on the breakpoint I define?

In merging the latest git pushes into the linux branch I’ve seen a pdb
generator does that mean I can actually get to more meaningful stack
traces etc. again the question how springs to mind? :slight_smile:

Thanks
Ivan

Yes… I’ll try again… maybe I missed something.
I should really say that the file that has the ruby code is an assembly
resource that gets read through an AssemblyReaderStreamContentProvider.
Should I be providing that content differently?

I use trace.rb · GitHub to set a breakpoint.

2009/3/23 Tomas M. [email protected]

Woops … setup.DebugMode (like Tomas said)

From: [email protected]
[mailto:[email protected]] On Behalf Of Jimmy
Schementi
Sent: Monday, March 23, 2009 1:32 PM
To: [email protected]
Subject: Re: [Ironruby-core] Debugging ruby code in a host

When you create the ScriptRuntimeSetup, do this:

setup.Debug = true;

That will tell the DLR to generate debuggable code.


From: [email protected]
[[email protected]] on behalf of Ivan Porto C.
[[email protected]]
Sent: Monday, March 23, 2009 12:32 PM
To: ironruby-core
Subject: [Ironruby-core] Debugging ruby code in a host
Hi

With my IronRubyMVC implementation I’m far enough to figure out that I
need to be able to put breakpoints in my ruby code :slight_smile:
Now the question is how, because I think I tried all of the ways that
are described in the wiki but had no success. I have a debug version of
IronRuby and I’m using it in a C# ASP.NEThttp://ASP.NET MVC project
with the System.Web.Mvc.IronRuby dll as a reference. The web application
hosts the scriptruntime etc. Now what do I need to do to make visual
studio break on the breakpoint I define?

In merging the latest git pushes into the linux branch I’ve seen a pdb
generator does that mean I can actually get to more meaningful stack
traces etc. again the question how springs to mind? :slight_smile:

Thanks
Ivan

The file you are setting breakpoint to needs to exists on the disk for
Visual Studio debugger to work.

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Ivan Porto
Carrero
Sent: Monday, March 23, 2009 2:14 PM
To: [email protected]
Subject: Re: [Ironruby-core] Debugging ruby code in a host

Yes… I’ll try again… maybe I missed something.
I should really say that the file that has the ruby code is an assembly
resource that gets read through an AssemblyReaderStreamContentProvider.
Should I be providing that content differently?

I use trace.rb · GitHub to set a breakpoint.

2009/3/23 Tomas M.
<[email protected]mailto:[email protected]>

Is DebugMode property of the ScriptRuntimeSetup of the ScriptRuntime you
run the script in set to true?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ivan Porto C.
Sent: Monday, March 23, 2009 12:32 PM
To: ironruby-core
Subject: [Ironruby-core] Debugging ruby code in a host

Hi

With my IronRubyMVC implementation I’m far enough to figure out that I
need to be able to put breakpoints in my ruby code :slight_smile:
Now the question is how, because I think I tried all of the ways that
are described in the wiki but had no success. I have a debug version of
IronRuby and I’m using it in a C# ASP.NEThttp://ASP.NET MVC project
with the System.Web.Mvc.IronRuby dll as a reference. The web application
hosts the scriptruntime etc. Now what do I need to do to make visual
studio break on the breakpoint I define?

In merging the latest git pushes into the linux branch I’ve seen a pdb
generator does that mean I can actually get to more meaningful stack
traces etc. again the question how springs to mind? :slight_smile:

Thanks
Ivan


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core

Ok it works when I use
Engine.RequireRubyFile(“C:\path\to\file\controller.rb”)
but not when i use a custom streamcontent provider that knows how to
deal
with virtual paths.

like

Anyway I’ll take the stream content providers out and just put something
in
that handles mappath to allow debugging.

But now the question becomes When would I want to use a
StreamContentProvider and when should I have to create a PAL ? Would
using
a PAL be a better idea to when hosting it in a webserver?

2009/3/23 Tomas M. [email protected]

PAL provides more general virtualization of file system (though still
not complete). By using custom content providers for a ScriptSource it
only affects one particular ScriptSource while PAL is used by other API
as well. For example, File#open goes thru PAL:
context.DomainManager.Platform.OpenInputFileStream(path, fileMode,
access, share);

Also, content of required files is read via PAL: see
Microsoft.Scripting\SourceFileContentProvider.cs.

So, PAL allows the host to make basic file IO operations work – you can,
for example, build virtual file system based on Isolated Storage or some
database table. The virtualization is not complete, we are looking for
reasonable set of API that it make sense to virtualize. If you find
something you would need let us know.

Sadly, Visual Studio debugger requires source files to be physical files
on disk. If you need to debug some code stored in a database you need to
save it to a file. You might want to do so only when DebugMode is on. If
it is not, PDBs are not generated anyways so the code is not debuggable
by VS.

Tomas

From: [email protected]
[mailto:[email protected]] On Behalf Of Ivan Porto
Carrero
Sent: Monday, March 23, 2009 3:18 PM
To: [email protected]
Subject: Re: [Ironruby-core] Debugging ruby code in a host

Ok it works when I use
Engine.RequireRubyFile(“C:\path\to\file\controller.rb”)
but not when i use a custom streamcontent provider that knows how to
deal with virtual paths.

like

Anyway I’ll take the stream content providers out and just put something
in that handles mappath to allow debugging.

But now the question becomes When would I want to use a
StreamContentProvider and when should I have to create a PAL ? Would
using a PAL be a better idea to when hosting it in a webserver?
2009/3/23 Tomas M.
<[email protected]mailto:[email protected]>

The file you are setting breakpoint to needs to exists on the disk for
Visual Studio debugger to work.

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ivan Porto C.
Sent: Monday, March 23, 2009 2:14 PM

To: [email protected]mailto:[email protected]
Subject: Re: [Ironruby-core] Debugging ruby code in a host

Yes… I’ll try again… maybe I missed something.
I should really say that the file that has the ruby code is an assembly
resource that gets read through an AssemblyReaderStreamContentProvider.
Should I be providing that content differently?

I use trace.rb · GitHub to set a breakpoint.

2009/3/23 Tomas M.
<[email protected]mailto:[email protected]>

Is DebugMode property of the ScriptRuntimeSetup of the ScriptRuntime you
run the script in set to true?

Tomas

From:
[email protected]mailto:[email protected]
[mailto:[email protected]mailto:[email protected]]
On Behalf Of Ivan Porto C.
Sent: Monday, March 23, 2009 12:32 PM
To: ironruby-core
Subject: [Ironruby-core] Debugging ruby code in a host

Hi

With my IronRubyMVC implementation I’m far enough to figure out that I
need to be able to put breakpoints in my ruby code :slight_smile:
Now the question is how, because I think I tried all of the ways that
are described in the wiki but had no success. I have a debug version of
IronRuby and I’m using it in a C# ASP.NEThttp://ASP.NET MVC project
with the System.Web.Mvc.IronRuby dll as a reference. The web application
hosts the scriptruntime etc. Now what do I need to do to make visual
studio break on the breakpoint I define?

In merging the latest git pushes into the linux branch I’ve seen a pdb
generator does that mean I can actually get to more meaningful stack
traces etc. again the question how springs to mind? :slight_smile:

Thanks
Ivan


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core


Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core