public Crashlog(string crashdata) { //Only use splitted Crash data! rawdata = crashdata; Assertion = Regex.Match(crashdata, @"Assertion: ?(?<data>.*)").Groups["data"].Value; if (Assertion == "") { Assertion = Regex.Match(crashdata, @"Exception: ?(?<data>.*\n.*)").Groups["data"].Value; } Filename = Regex.Match(crashdata, @"File: ?(?<data>.*)").Groups["data"].Value; Exename = Regex.Match(crashdata, @"App: ?(?<data>.*)").Groups["data"].Value; Pid = UInt16.Parse(Regex.Match(crashdata, @"Pid: ?(?<data>.*)").Groups["data"].Value); Arguments = Regex.Match(crashdata, @"Cmdline: ?(?<data>.*)").Groups["data"].Value.Split('-'); BaseAddr = Regex.Match(crashdata, @"BaseAddr: ?(?<data>.*)").Groups["data"].Value; ProgramID = Regex.Match(crashdata, @"ProgramId: ?(?<data>.*)").Groups["data"].Value; Build = Regex.Match(crashdata, @"Build: ?(?<data>.*)").Groups["data"].Value; CrashTime = Regex.Match(crashdata, @"When: ?(?<data>.*)").Groups["data"].Value; UpTime = Regex.Match(crashdata, @"Uptime: ?(?<data>.*)").Groups["data"].Value; Username = Regex.Match(crashdata, @"Name: ?(?<data>.*)").Groups["data"].Value; IPAdress = Regex.Match(crashdata, @"IpAddr: ?(?<data>.*)").Groups["data"].Value; Processors = Regex.Match(crashdata, @"Processors: ?(?<data>.*)").Groups["data"].Value; OS = Regex.Match(crashdata, @"OSVersion: ?(?<data>.*)").Groups["data"].Value; DllList = Regex.Matches(crashdata, @"\w:\\.*.dll").Cast <Match>().Select(m => m.Value).ToArray(); Solutionkey = CrashLibrary.ClassifyCrash(this); Solutioninfo = CrashLibrary.SolutionInfo[Solutionkey]; }
public void Solve() { if (IsSolveable) { CrashLibrary.ApplySolution(Solutionkey); } }