in src/SourceMapToolkit.CallstackDeminifier/StackTraceParser.cs [48:81]
public virtual IReadOnlyList<StackFrame> ParseStackTrace(string stackTraceString, out string message)
{
if (stackTraceString == null)
{
throw new ArgumentNullException(nameof(stackTraceString));
}
message = null;
string[] stackFrameStrings = stackTraceString.SplitFast('\n');
int startingIndex = 0;
var firstFrame = stackFrameStrings.First();
if (!firstFrame.StartsWith(" ") && TryExtractMethodNameFromFrame(firstFrame) == null)
{
message = firstFrame.Trim();
startingIndex = 1;
}
// Allocate assuming none of the frames are null.
List<StackFrame> stackTrace = new List<StackFrame>(stackFrameStrings.Length - startingIndex);
for (int i = startingIndex; i < stackFrameStrings.Length; i++)
{
StackFrame parsedStackFrame = TryParseSingleStackFrame(stackFrameStrings[i]);
if (parsedStackFrame != null)
{
stackTrace.Add(parsedStackFrame);
}
}
return stackTrace;
}