Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
                }
            }
        }
Beispiel #4
0
        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);
                    }
                }
            }
        }