diff --git a/VisualPascalABCNETLinux/DS/RunManager/RunManager.cs b/VisualPascalABCNETLinux/DS/RunManager/RunManager.cs index ef4294b9f..2b96463ba 100644 --- a/VisualPascalABCNETLinux/DS/RunManager/RunManager.cs +++ b/VisualPascalABCNETLinux/DS/RunManager/RunManager.cs @@ -128,40 +128,44 @@ namespace VisualPascalABC try { foreach (string StackItemData in StackItemsData) - { - StackTraceItem StackTraceItem = new StackTraceItem(); - string str = StackItemData.TrimStart(' '); - int beg = str.IndexOf(' '); - int end = str.IndexOf(") "); - if (end == -1) - end = str.IndexOf(")"); - if (end == -1) - end = str.Length-1; - StackTraceItem.FunctionName = str.Substring(beg + 1, end - beg); - if (end + 1 < str.Length) { - str = str.Substring(end + 1); - str = str.TrimStart(' '); - beg = str.IndexOf(' '); - end = str.IndexOf(':'); - end = str.IndexOf(':', end + 1); + StackTraceItem StackTraceItem = new StackTraceItem(); + string str = StackItemData.TrimStart(' '); + int beg = str.IndexOf(' '); + int end = str.IndexOf(") "); if (end == -1) - continue; - StackTraceItem.SourceFileName = str.Substring(beg + 1, end - beg-1); - beg = str.IndexOf(' ',end); - if (beg > 0) + end = str.IndexOf(")"); + if (end == -1) + end = str.Length - 1; + StackTraceItem.FunctionName = str.Substring(beg + 1, end - beg); + + if (end + 1 < str.Length) { - string slnum = str.Substring(beg + 1).Replace(".", ""); - StackTraceItem.LineNumber = Convert.ToInt32(slnum); - if (StackTraceItem.LineNumber >= 16777214) + str = str.Substring(end + 1); + + str = str.TrimStart(' '); + beg = str.IndexOf("in "); + end = str.IndexOf(':'); + //end = str.IndexOf(':', end + 1); + + if (end == -1) + continue; + StackTraceItem.SourceFileName = str.Substring(beg + 3, end - beg - 3); + //Console.WriteLine(StackTraceItem.SourceFileName); + beg = end; + if (beg > 0) { - StackTraceItem.LineNumber = 0; - StackTraceItem.SourceFileName = null; + string slnum = str.Substring(beg + 1).Replace(".", ""); + StackTraceItem.LineNumber = Convert.ToInt32(slnum); + if (StackTraceItem.LineNumber >= 16777214) + { + StackTraceItem.LineNumber = 0; + StackTraceItem.SourceFileName = null; + } } } + StackTrace.Add(StackTraceItem); } - StackTrace.Add(StackTraceItem); - } } catch (Exception e) { diff --git a/VisualPascalABCNETLinux/DS/Utils/ProcessRunner.cs b/VisualPascalABCNETLinux/DS/Utils/ProcessRunner.cs index f4646f63d..57604d153 100644 --- a/VisualPascalABCNETLinux/DS/Utils/ProcessRunner.cs +++ b/VisualPascalABCNETLinux/DS/Utils/ProcessRunner.cs @@ -239,9 +239,12 @@ namespace VisualPascalABC.Utils else #endif { - process.StartInfo.FileName = command; + string dbg = ""; + if (WorkbenchServiceFactory.Workbench.VisualEnvironmentCompiler.Compiler.CompilerOptions.Debug) + dbg = " --debug "; + process.StartInfo.FileName = "mono"; process.StartInfo.WorkingDirectory = workingDirectory; - process.StartInfo.Arguments = arguments; + process.StartInfo.Arguments = dbg+command+" "+arguments; } } //process.StartInfo.Domain = Domain.FriendlyName;