crashanalysercmd/Libraries/File Formats/Plugins/XmlFilePlugin/FileFormat/CXmlFileDocument.cs
changeset 3 045ade241ef5
parent 2 0c91f0baec58
equal deleted inserted replaced
2:0c91f0baec58 3:045ade241ef5
   203             if (datablock.Hash() != string.Empty)
   203             if (datablock.Hash() != string.Empty)
   204             {
   204             {
   205                 aOutput.WriteAttributeString(XmlConsts.Kxml_defect_hash, datablock.Hash());
   205                 aOutput.WriteAttributeString(XmlConsts.Kxml_defect_hash, datablock.Hash());
   206             }
   206             }
   207 
   207 
       
   208             if (datablock.DetailedHash() != string.Empty)
       
   209             {
       
   210                 aOutput.WriteAttributeString(XmlConsts.Kxml_detailed_defect_hash, datablock.DetailedHash());
       
   211             }
       
   212 
       
   213             if (datablock.TestSet() != string.Empty)
       
   214             {
       
   215                 aOutput.WriteAttributeString(XmlConsts.Kxml_testset, datablock.TestSet());
       
   216             }
       
   217 
   208             // Child elements for report details
   218             // Child elements for report details
   209             if (datablock.CodeSegs().Count > 0)
   219             if (datablock.CodeSegs().Count > 0)
   210             {
   220             {
   211                 aOutput.WriteStartElement(XmlConsts.Kxml_loaded_dlls);
   221                 aOutput.WriteStartElement(XmlConsts.Kxml_loaded_dlls);
   212             }
   222             }
   223             {
   233             {
   224                 aOutput.WriteEndElement(); // loaded dlls
   234                 aOutput.WriteEndElement(); // loaded dlls
   225             }
   235             }
   226 
   236 
   227             // Traces
   237             // Traces
   228             if(datablock.RegStorage().BasicRegs().Registers.Count > 0 ||
   238             if( datablock.RegStorage().BasicRegs().Registers.Count > 0 ||
   229                 datablock.CallStacks().Count > 0 ||
   239                 datablock.CallStacks().Count > 0 ||
   230                 datablock.OstTraces().Count > 0 ||
   240                 datablock.OstTraces().Count > 0 ||
   231                 datablock.Eventlog().Count > 0 ||
   241                 datablock.Eventlog().Count > 0 ||
   232                 datablock.RegStorage().OtherRegLists().Count > 0)
   242                 datablock.RegStorage().OtherRegLists().Count > 0 ||
       
   243                 datablock.PanicDescription() != String.Empty )
   233             {
   244             {
   234                 aOutput.WriteStartElement(XmlConsts.Kxml_traces);
   245                 aOutput.WriteStartElement(XmlConsts.Kxml_traces);
   235             }
   246             }
   236 
   247 
   237             WriteDetail(aOutput, XmlConsts.Kxml_register, datablock.RegStorage().BasicRegs().ToString());
   248             WriteDetail(aOutput, XmlConsts.Kxml_register, datablock.RegStorage().BasicRegs().ToPrettyString());
   238 
   249 
   239             // Extra registers  
   250             // Extra registers  
   240             System.Text.StringBuilder extraRegisters = new System.Text.StringBuilder();
   251             System.Text.StringBuilder extraRegisters = new System.Text.StringBuilder();
   241             foreach (CXmlRegisterStorage.CCrashInfoRegisterList registerList in datablock.RegStorage().OtherRegLists())
   252             foreach (CXmlRegisterStorage.CCrashInfoRegisterList registerList in datablock.RegStorage().OtherRegLists())
   242             {
   253             {
   263             foreach (string line in datablock.Eventlog())
   274             foreach (string line in datablock.Eventlog())
   264             {
   275             {
   265                 eventLog.AppendLine(line);
   276                 eventLog.AppendLine(line);
   266             }
   277             }
   267             WriteDetail(aOutput, XmlConsts.Kxml_eventlog, eventLog.ToString());
   278             WriteDetail(aOutput, XmlConsts.Kxml_eventlog, eventLog.ToString());
       
   279 
       
   280             // Panic description
       
   281             WriteDetail(aOutput, XmlConsts.Kxml_panic_description, datablock.PanicDescription());
   268 
   282 
   269             if (datablock.RegStorage().BasicRegs().Registers.Count > 0 ||
   283             if (datablock.RegStorage().BasicRegs().Registers.Count > 0 ||
   270                 datablock.CallStacks().Count > 0 ||
   284                 datablock.CallStacks().Count > 0 ||
   271                 datablock.OstTraces().Count > 0 ||
   285                 datablock.OstTraces().Count > 0 ||
   272                 datablock.Eventlog().Count > 0 ||
   286                 datablock.Eventlog().Count > 0 ||
   273                 datablock.RegStorage().OtherRegLists().Count > 0)
   287                 datablock.RegStorage().OtherRegLists().Count > 0 ||
       
   288                 datablock.PanicDescription() != String.Empty)
   274             {
   289             {
   275                 aOutput.WriteEndElement(); // traces
   290                 aOutput.WriteEndElement(); // traces
   276             }
   291             }
   277             WriteDictionaryValues(aOutput, datablock);
   292             WriteDictionaryValues(aOutput, datablock);
   278             WriteUniqueValues(aOutput, datablock);
   293             WriteUniqueValues(aOutput, datablock);
   286             // Dictionary values
   301             // Dictionary values
   287             aOutput.WriteStartElement(XmlConsts.Kxml_dictionary_values);
   302             aOutput.WriteStartElement(XmlConsts.Kxml_dictionary_values);
   288 
   303 
   289             WriteDetail(aOutput, XmlConsts.Kxml_panic_id, datablock.PanicId());
   304             WriteDetail(aOutput, XmlConsts.Kxml_panic_id, datablock.PanicId());
   290             WriteDetail(aOutput, XmlConsts.Kxml_panic_category, datablock.PanicCategory());
   305             WriteDetail(aOutput, XmlConsts.Kxml_panic_category, datablock.PanicCategory());
   291             WriteDetail(aOutput, XmlConsts.Kxml_panic_description, datablock.PanicDescription());
       
   292             WriteDetail(aOutput, XmlConsts.Kxml_language, datablock.Language());
   306             WriteDetail(aOutput, XmlConsts.Kxml_language, datablock.Language());
   293             
   307             
   294             if (!datablock.Process().Equals(XmlConsts.Kxml_unknown_process))
   308             if (!datablock.Process().Equals(XmlConsts.Kxml_unknown_process))
   295             {
   309             {
   296                 WriteDetail(aOutput, XmlConsts.Kxml_panicked_process, datablock.Process());
   310                 WriteDetail(aOutput, XmlConsts.Kxml_panicked_process, datablock.Process());
   377             WriteDetail(aOutput, XmlConsts.Kxml_siminfo, datablock.Imsi());
   391             WriteDetail(aOutput, XmlConsts.Kxml_siminfo, datablock.Imsi());
   378             WriteDetail(aOutput, XmlConsts.Kxml_locinfo, datablock.LocInfo());
   392             WriteDetail(aOutput, XmlConsts.Kxml_locinfo, datablock.LocInfo());
   379             WriteDetail(aOutput, XmlConsts.Kxml_cellid, datablock.NetworkCell());
   393             WriteDetail(aOutput, XmlConsts.Kxml_cellid, datablock.NetworkCell());
   380             WriteDetail(aOutput, XmlConsts.Kxml_psninfo, datablock.SerialNumber());
   394             WriteDetail(aOutput, XmlConsts.Kxml_psninfo, datablock.SerialNumber());
   381             WriteDetail(aOutput, XmlConsts.Kxml_uid, datablock.UID());
   395             WriteDetail(aOutput, XmlConsts.Kxml_uid, datablock.UID());
   382             WriteDetail(aOutput, XmlConsts.Kxml_testset, datablock.TestSet());
       
   383             WriteDetail(aOutput, XmlConsts.Kxml_diskinfo, datablock.DiskInfo());
   396             WriteDetail(aOutput, XmlConsts.Kxml_diskinfo, datablock.DiskInfo());
   384             WriteDetail(aOutput, XmlConsts.Kxml_phone_number, datablock.PhoneNumber());
   397             WriteDetail(aOutput, XmlConsts.Kxml_phone_number, datablock.PhoneNumber());
   385             
   398             
   386             WriteDetail(aOutput, XmlConsts.Kxml_report_ok, datablock.ReportOK());
   399             WriteDetail(aOutput, XmlConsts.Kxml_report_ok, datablock.ReportOK());
   387             WriteDetail(aOutput, XmlConsts.Kxml_report_fail, datablock.ReportFail());
   400             WriteDetail(aOutput, XmlConsts.Kxml_report_fail, datablock.ReportFail());