private StackFrame ReadFrame(FastStream source) { StringBuilder sb = new StringBuilder(); // Address source.SkipWhiteSpace(); source.ReadAsciiStringUpTo(' ', sb); string address = sb.ToString(); sb.Clear(); // Trying to get the module and symbol... source.SkipWhiteSpace(); source.ReadAsciiStringUpToLastBeforeTrue('(', sb, delegate(byte c) { if (c != '\n' && !source.EndOfStream) { return(true); } return(false); }); string assumedSymbol = sb.ToString(); sb.Clear(); source.ReadAsciiStringUpTo('\n', sb); string assumedModule = sb.ToString(); sb.Clear(); assumedModule = RemoveOuterBrackets(assumedModule.Trim()); string actualModule = assumedModule; string actualSymbol = RemoveOuterBrackets(assumedSymbol.Trim()); if (assumedModule.EndsWith(".map")) { string[] moduleSymbol = GetSymbolFromMicrosoftMap(assumedSymbol, assumedModule); actualSymbol = string.IsNullOrEmpty(moduleSymbol[1]) ? assumedModule : moduleSymbol[1]; actualModule = moduleSymbol[0]; } // Can't use Path.GetFileName Because it throws on illegal Windows characters actualModule = GetFileName(actualModule); actualSymbol = RemoveOffset(actualSymbol.Trim()); return(new StackFrame(address, actualModule, actualSymbol)); }