Esempio n. 1
0
        protected override void XmlSerializeContent(CrashXmlPlugin.FileFormat.Document.CXmlDocumentSerializationParameters aParameters)
        {
            CXmlNode.WriteId(iCodeSeg, aParameters.Writer);
            aParameters.Writer.WriteElementString(SegConstants.CmnName, iCodeSeg.Name);
            aParameters.Writer.WriteElementString(SegConstants.CmnBase, iCodeSeg.Base.ToString("x8"));
            aParameters.Writer.WriteElementString(SegConstants.CmnSize, iCodeSeg.Size.ToString("x8"));
            aParameters.Writer.WriteElementString(SegConstants.CmnRange, iCodeSeg.Range.ToString());

            if (iCodeSeg.Checksum != 0)
            {
                aParameters.Writer.WriteElementString(SegConstants.CmnChecksum, iCodeSeg.Checksum.ToString("x8"));
            }

            // Write any messages
            CXmlSegBase.XmlSerializeMessages(aParameters, iCodeSeg);
        }
Esempio n. 2
0
        protected override void XmlSerializeContent(CrashXmlPlugin.FileFormat.Document.CXmlDocumentSerializationParameters aParameters)
        {
            CXmlNode.WriteId(iRegister, aParameters.Writer);

            // Map the ArmRegister name onto the register names we expose via XML. In reality, the only register names
            // that need remapping are R13, R14 and R15.
            string regName = RemapRegisterName();

            aParameters.Writer.WriteElementString(SegConstants.CmnName, regName);
            aParameters.Writer.WriteElementString(SegConstants.CmnValue, iRegister.Value.ToString("x8"));

            if (iRegister.Symbol != null && CXmlSymbol.IsSerializable(iRegister.Symbol))
            {
                CXmlNode.WriteLink(iRegister.Symbol.Id, SegConstants.Symbols, aParameters.Writer);
            }

            // Write any messages
            CXmlSegBase.XmlSerializeMessages(aParameters, iRegister);
        }
Esempio n. 3
0
        protected override void XmlSerializeContent(CrashXmlPlugin.FileFormat.Document.CXmlDocumentSerializationParameters aParameters)
        {
            CXmlNode.WriteId(iStack, aParameters.Writer);

            if (iStack.Registers != null)
            {
                CXmlNode.WriteLink(iStack.Registers.Id, SegConstants.Registers, aParameters.Writer);
            }
            if (iStack.OwningThread != null)
            {
                CXmlNode.WriteLink(iStack.OwningThread.Id, SegConstants.Threads, aParameters.Writer);
            }

            aParameters.Writer.WriteElementString(SegConstants.CmnBase, iStack.Base.ToString("x8"));
            aParameters.Writer.WriteElementString(SegConstants.CmnSize, iStack.Size.ToString("x"));
            aParameters.Writer.WriteElementString(SegConstants.CmnRange, iStack.Range.ToString());

            // Write defect hash
            try
            {
                MobileCrashHashBuilder hashBuilder = MobileCrashHashBuilder.New(MobileCrashHashBuilder.TConfiguration.EDefault, iStack);
                if (hashBuilder != null)
                {
                    aParameters.Writer.WriteElementString(SegConstants.Stacks_Stack_Hash, hashBuilder.GetHash());
                }

                // Write detailed hash
                hashBuilder = MobileCrashHashBuilder.New(MobileCrashHashBuilder.TConfiguration.EDetailed, iStack, MobileCrashHashBuilder.KDetailedNumberOfStackEntriesToCheckForSymbols);

                if (hashBuilder != null)
                {
                    aParameters.Writer.WriteElementString(SegConstants.Stacks_Stack_Detailed_Hash, hashBuilder.GetHash());
                }
            }
            catch (Exception)
            {
                // Could not create MobileCrashHashBuilder, ignore.
            }

            // Write any messages
            CXmlSegBase.XmlSerializeMessages(aParameters, iStack);
        }
Esempio n. 4
0
        protected override void XmlSerializeContent(CrashXmlPlugin.FileFormat.Document.CXmlDocumentSerializationParameters aParameters)
        {
            CXmlNode.WriteId(iThread, aParameters.Writer);

            aParameters.Writer.WriteElementString(SegConstants.CmnName, iThread.Name);
            aParameters.Writer.WriteElementString(SegConstants.Threads_Thread_FullName, iThread.FullName);

            // Parent process
            if (iThread.OwningProcess != null)
            {
                CXmlNode.WriteLink(iThread.OwningProcess.Id, SegConstants.Processes, aParameters.Writer);
            }

            // Thread priority
            if (iThread.Priority != 0)
            {
                aParameters.Writer.WriteElementString(SegConstants.CmnPriority, iThread.Priority.ToString());
            }

            // Write any messages
            CXmlSegBase.XmlSerializeMessages(aParameters, iThread);
        }