private void ExtractProcess(CIProcess aProcess) { // Extract process info from thread full name. DExcExtractorList threadInfo = iData[DExcExtractorListType.EListThread]; foreach (string line in threadInfo) { Match m = EM.ThreadName.Match(line); if (m.Success) { CIFullNameUtils parser = new CIFullNameUtils(m.Groups[1].Value); parser.GetProcessInfo(aProcess); return; } } }
private void ExtractThreadExitReason(CIThread aThread) { aThread.ExitInfo.Type = CrashItemLib.Crash.ExitInfo.CIExitInfo.TExitType.EExitTypeException; // Extract process info from thread full name. DExcExtractorList threadInfo = iData[DExcExtractorListType.EListThread]; foreach (string line in threadInfo) { Match m = EM.ThreadPanicDetails.Match(line); if (m.Success) { aThread.ExitInfo.Type = CrashItemLib.Crash.ExitInfo.CIExitInfo.TExitType.EExitTypePanic; aThread.ExitInfo.Category = m.Groups[1].Value; aThread.ExitInfo.Reason = int.Parse(m.Groups[2].Value); } } }
private void ExtractProcessCodeSegs(CIProcess aProcess) { DExcExtractorList codeSegInfo = iData[DExcExtractorListType.EListCodeSegments]; foreach (string line in codeSegInfo) { Match m = EM.CodeSegmentsEntry.Match(line); if (m.Success) { GroupCollection groups = m.Groups; // uint codeSegBase = uint.Parse(groups[1].Value, System.Globalization.NumberStyles.HexNumber); uint codeSegLimit = uint.Parse(groups[2].Value, System.Globalization.NumberStyles.HexNumber); string codeSegName = groups[3].Value; // aProcess.CreateCodeSeg(codeSegName, codeSegBase, codeSegLimit); } } }
private void ExtractThread(CIThread aThread) { // Extract process info from thread full name. DExcExtractorList threadInfo = iData[DExcExtractorListType.EListThread]; foreach (string line in threadInfo) { Match m = EM.ThreadName.Match(line); if (m.Success) { CIFullNameUtils parser = new CIFullNameUtils(m.Groups[1].Value); parser.GetThreadInfo(aThread); } else { m = EM.ThreadId.Match(line); if (m.Success) { aThread.Id = int.Parse(m.Groups[1].Value); } } } }