MonoDevelop.Debugger.Gdb.GdbBacktrace.CreateFrame C# (CSharp) Method

CreateFrame() protected method

protected CreateFrame ( ResultData frameData ) : Mono.Debugging.Client.StackFrame
frameData ResultData
return Mono.Debugging.Client.StackFrame
		protected virtual StackFrame CreateFrame (ResultData frameData)
		{
			string lang = "Native";
			string func = frameData.GetValueString ("func");
			string sadr = frameData.GetValueString ("addr");
			
			if (func == "??" && session.IsMonoProcess) {
				// Try to get the managed func name
				try {
					var data = session.RunCommand ("-data-evaluate-expression", "mono_pmip(" + sadr + ")");
					string val = data.GetValueString ("value");
					if (val != null) {
						int i = val.IndexOf ('"');
						if (i != -1) {
							func = val.Substring (i).Trim ('"',' ');
							lang = "Mono";
						}
					}
				} catch {
				}
			}

			int line = -1;
			string sline = frameData.GetValueString ("line");
			if (sline != null)
				line = int.Parse (sline);
			
			string sfile = frameData.GetValueString ("fullname");
			if (sfile == null)
				sfile = frameData.GetValueString ("file");
			if (sfile == null)
				sfile = frameData.GetValueString ("from");
			SourceLocation loc = new SourceLocation (func ?? "?", sfile, line);
			
			long addr;
			if (!string.IsNullOrEmpty (sadr))
				addr = long.Parse (sadr.Substring (2), NumberStyles.HexNumber);
			else
				addr = 0;
			
			return new StackFrame (addr, loc, lang);
		}