private void PrepareEntryParser() { // Junk the old paragraphs ParserEngine.Reset(); // Get a handle to our destination container DObjectCon container = CrashDebugger.ContainerByType(DObject.TObjectType.EProcess); // Save last thread if it looks valid if (iCurrentObject != null && iCurrentObject.KernelAddress != 0) { bool alreadyExists = container.Contains(iCurrentObject); if (!alreadyExists) { container.Add(iCurrentObject); } // iCurrentObject = null; } // Create a new object which will contain the next set of parser data iCurrentObject = new DProcess(CrashDebugger); // Use the helper to prepare next paragraphs iHelper.CreateMonitorProcess(ParserEngine, "ENTRY [" + container.TypeDescription + "]", iCurrentObject, new SymbianParserLib.BaseStructures.ParserElementBase.ElementCompleteHandler(ProcessChunksComplete_ElementHandler)); }
public override void Finalise() { DObjectCon container = CrashDebugger[DObject.TObjectType.EProcess]; if (container.Contains(CrashDebugger.TheCurrentProcess) == false) { container.Add(CrashDebugger.TheCurrentProcess); } }
public override void Prepare() { DObjectCon container = CrashDebugger.ContainerByType(DObject.TObjectType.EProcess); // ParserLine l1 = ParserLine.NewSymFormat("Container %d at %08x contains %d %S:\r\n"); l1[0].SetTargetProperty(container, "Index"); l1[1].SetTargetProperty(container, "KernelAddress"); l1[2].SetTargetProperty(container, "ExpectedCount"); l1.ElementComplete += new SymbianParserLib.BaseStructures.ParserElementBase.ElementCompleteHandler(HeaderLine_ElementComplete); // ParserParagraph para = new ParserParagraph("CONTAINER [" + container.TypeDescription + "]"); para.Add(l1); ParserEngine.Add(para); }