PascalABCNET for Linux: Запуск программ с флагом --debug

PascalABCNET for Linux: Ошибки времени выполнения теперь перехватываются IDE
This commit is contained in:
Ivan Bondarev 2022-10-28 18:12:20 +02:00
parent 1c5c8c6735
commit 91afa612b9
2 changed files with 36 additions and 29 deletions

View file

@ -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)
{

View file

@ -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;