Everything works correctly when I use the Remote Debugger rather than debugging inside VS2012. I haven't had to use the remote debugger since VS2005, but glad it does the job
Thanks for your patience John Davidson On Wed, Feb 13, 2013 at 6:47 PM, John Davidson <jwdavid...@gmail.com> wrote: > Some more followup detail. I added the Frames and FullFrames option to > the engine creation. This allows me to now get the full stack trace > into the IronPython.dll > The process is hanging in > > > IronPython.dll!IronPython.Runtime.Operations.PythonTypeOps.GetBuiltinFunction(System.Type > type = {Name = Cannot evaluate expression because a native frame is on > top of the call stack. FullName = Cannot evaluate expression because a > native frame is on top of the call stack.}, string cacheName = > "__new__", string pythonName = "__new__", > IronPython.Runtime.Types.FunctionType? funcType = Function | > AlwaysVisible, System.Reflection.MemberInfo[] mems = > {System.Reflection.MemberInfo[3]}) + 0x5e8 bytes > > I had also tried enabling the ExceptionDetail, ShowClrExceptions and > MTA options, but they do not change behavior or give any additional > details > > John Davidson > > On Wed, Feb 13, 2013 at 5:01 PM, John Davidson <jwdavid...@gmail.com> wrote: >> Thank you for the response. >> >> There is no error when running in the debugger. The process just hangs >> at the line "source.Execute(scope)". When I do a manual break in the >> debugger the error I get is "Cannot evaluate expression because a >> native frame is on top of the call stack". The information returned by >> the call stack is incomplete in that the reference to "source.Execute" >> is not included. >> >> IronPython is being loaded only from the GAC and it is the correct >> version 2.7.0.40, reported by the ScriptEngine as being "IronPython >> 2.7.3" when the code is running. >> >> This is not yet running on a target server but is ongoing development >> on VS2012 in Windows 8. >> >> John Davidson >> >> On Wed, Feb 13, 2013 at 11:05 AM, Keith Rome <r...@wintellect.com> wrote: >>> First thing I would check is to make sure it is trying to load the right >>> version of IronPython. If you are deploying the assemblies to your >>> application's bin folder then you will also want to verify that no versions >>> are also loaded in the GAC. Likewise, if your application is using >>> references to GAC'd assemblies then you want to make sure that they are >>> also on the target server (or at least copied to local bin). >>> >>> >>> Other than that, you didn't actually mention what the problem is, or the >>> error message you are seeing. So it will be difficult to offer any help >>> without some information about the problem. >>> >>> >>> >>> Keith Rome >>> Senior Consultant and Architect >>> MCPD-EAD, MCSD, MCDBA, MCTS-WPF, MCTS-TFS, MCTS-WSS >>> Wintellect | 770.617.4016 | kr...@wintellect.com >>> www.wintellect.com >>> >>> -----Original Message----- >>> From: Ironpython-users >>> [mailto:ironpython-users-bounces+rome=wintellect....@python.org] On Behalf >>> Of John Davidson >>> Sent: Wednesday, February 13, 2013 9:38 AM >>> To: ironpython-users@python.org >>> Subject: [Ironpython-users] Debugging with CLR in Web App >>> >>> I am in the process of creating an MVC 4 based wiki with scripting support >>> for dynamic creation of content. I have chosen IronPython as the embedded >>> scripting host and am developing a DSL for the scripting portion. This DSL >>> is created in C# and exposed to the CLR for scripting using IronPython. >>> >>> The code I have works correctly when run without debugging. The process for >>> normal execution is w3wp.exe run from VS2012. It also works correctly, with >>> or without debugging, when run as a unit test. >>> >>> The code for script engine creation and execution is shown below: >>> >>> using System; >>> using System.Collections.Generic; >>> using System.Diagnostics; >>> using System.IO; >>> using System.Linq; >>> using System.Reflection; >>> using System.Text; >>> using System.Threading.Tasks; >>> using IronPython.Hosting; >>> using IronPython.Runtime; >>> using Microsoft.Scripting.Hosting; >>> >>> namespace LynxWikiScripting >>> { >>> public class WikiScriptEngine >>> { >>> private static readonly Lazy<WikiScriptEngine> scriptEngine = new >>> Lazy<WikiScriptEngine>(() => { return new WikiScriptEngine(); }, true); >>> >>> private WikiScriptEngine() {} >>> >>> public static ScriptEngine Engine = Python.CreateEngine(new >>> Dictionary<string, object>() {{ "Debug", true }} ); >>> public static ScriptRuntime Runtime = Engine.Runtime; >>> public static ScriptScope scope = Engine.CreateScope(); >>> >>> >>> public static void Initialize() >>> { >>> string fullPath = Assembly.GetExecutingAssembly().Location; >>> string rootDir = Directory.GetParent(fullPath).FullName; >>> >>> } >>> >>> public static string ExecuteBehavior(string scriptInput) >>> { >>> StringBuilder scriptSource = new StringBuilder(); >>> scriptSource.AppendLine("import clr"); >>> >>> scriptSource.AppendLine(@"clr.AddReferenceToFileAndPath(r'C:\Users\John\Documents\Visual >>> Studio 2012\Projects\LynxWiki\LynxWiki\App_Code\IronWiki.dll')"); >>> scriptSource.AppendLine("import IronWiki"); >>> scriptSource.AppendLine("from IronWiki import >>> UtilityProperties"); >>> scriptSource.AppendLine("from IronWiki import IronWikiSyntax"); >>> scriptSource.Append(scriptInput); >>> try { >>> ScriptSource source = >>> Engine.CreateScriptSourceFromString(scriptSource.ToString(), >>> Microsoft.Scripting.SourceCodeKind.Statements); >>> source.Execute(scope); >>> var varPyNow = String.Empty; >>> scope.TryGetVariable<string>("ScriptOutput", out varPyNow); >>> return varPyNow; >>> } >>> catch (Exception ex) { >>> Debug.Print(ex.Message); >>> return ex.Message; >>> } >>> } >>> } >>> } >>> >>> The unit test code is: >>> >>> using System; >>> using System.Text; >>> using Microsoft.VisualStudio.TestTools.UnitTesting; >>> using LynxWikiScripting; >>> >>> namespace LynxWikiScripting.Tests >>> { >>> [TestClass] >>> public class UnitTest1 >>> { >>> [TestMethod] >>> public void TestIronWikiSyntax() >>> { >>> WikiScriptEngine.Initialize(); >>> StringBuilder scriptSource = new StringBuilder(); >>> scriptSource.AppendLine(); >>> scriptSource.AppendLine("WikiSyntax = IronWikiSyntax()"); >>> scriptSource.AppendLine("so = ''"); >>> scriptSource.AppendLine("for iwc in WikiSyntax.IronWikiClasses >>> :"); >>> scriptSource.AppendLine(" so = so + '||' + iwc.Name + >>> '||' + iwc.Description + '''||\\r\\n'''"); >>> scriptSource.AppendLine("ScriptOutput = so"); >>> //scriptSource.AppendLine(""); >>> //scriptSource.AppendLine(""); >>> >>> string result = >>> WikiScriptEngine.ExecuteBehavior(scriptSource.ToString()); >>> >>> Assert.IsNotNull(result); >>> } >>> } >>> } >>> >>> The string returned by the processing of the IronPython script is: >>> >>> ||IronWikiSyntax||A class containing information about the IronWiki >>> ||IronWikiSyntax||syntax|| >>> ||IronWikiClass||The class describing an IronWiki class|| >>> ||IronWikiMember||The class describing an IronWiki member|| >>> ||UtilityProperties||A class that provides a number of utility >>> ||UtilityProperties||properties|| >>> >>> This is a wiki table text showing the result of reflecting the contents of >>> the DSL at its inception. >>> >>> The application code has identical inputs to ExecuteBehavior as the unit >>> test has. I have tried Python.CreateEngine with or without the "debug" >>> option and also with and without the "trace" option. There is no difference >>> in execution behavior based on having or not having the options included. >>> >>> Is there something else I am missing, or can I give more information to >>> help resolve my problem. >>> >>> Thanks >>> >>> John Davidson >>> _______________________________________________ >>> Ironpython-users mailing list >>> Ironpython-users@python.org >>> http://mail.python.org/mailman/listinfo/ironpython-users >>> >>> _______________________________________________ Ironpython-users mailing list Ironpython-users@python.org http://mail.python.org/mailman/listinfo/ironpython-users