# [Ironruby-core] Debugging ruby code in a host

Tomas Matousek Tomas.Matousek at microsoft.com
Mon Mar 23 21:23:49 EDT 2009

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: ironruby-core-bounces at rubyforge.org [mailto:ironruby-core-bounces at rubyforge.org] On Behalf Of Ivan Porto Carrero
Sent: Monday, March 23, 2009 3:18 PM
To: ironruby-core at rubyforge.org
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 http://github.com/casualjim/ironrubymvc/blob/57cfa96ae7ce03c55e25eeb74a20d1500760b414/IronRubyMvc/Core/VirtualPathStreamContentProvider.cs

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 Matousek <Tomas.Matousek at microsoft.com<mailto:Tomas.Matousek at microsoft.com>>

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

Tomas

From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] On Behalf Of Ivan Porto Carrero
Sent: Monday, March 23, 2009 2:14 PM

To: ironruby-core at rubyforge.org<mailto:ironruby-core at rubyforge.org>
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?

http://github.com/casualjim/ironrubymvc/blob/57cfa96ae7ce03c55e25eeb74a20d1500760b414/IronRubyMvc/Core/RubyEngine.cs#L352

I use http://gist.github.com/74979 to set a breakpoint.

2009/3/23 Tomas Matousek <Tomas.Matousek at microsoft.com<mailto:Tomas.Matousek at microsoft.com>>

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

Tomas

From: ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org> [mailto:ironruby-core-bounces at rubyforge.org<mailto:ironruby-core-bounces at rubyforge.org>] 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 :)
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<http://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? :)

Thanks
Ivan

_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

_______________________________________________
Ironruby-core mailing list
Ironruby-core at rubyforge.org<mailto:Ironruby-core at rubyforge.org>
http://rubyforge.org/mailman/listinfo/ironruby-core

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090323/27e184e7/attachment.html>