public CorMetadataImport(CorModule managedModule) { // GUID Copied from Cor.h Guid IID_IMetadataImport = new Guid("7DAC8207-D3AE-4c75-9B67-92801A497D44"); m_importer = (IMetadataImport) managedModule.GetMetaDataInterface(IID_IMetadataImport); Debug.Assert(m_importer != null); }
private void setBreakpointThroughDocument(CorModule module, ISymbolReader reader) { foreach (var doc in reader.GetDocuments()) { if (attemptSetBreakpoint(reader, doc, module)) return; } }
internal MDbgModule(MDbgProcess process, CorModule managedModule, int number) { Debug.Assert(process != null && managedModule != null); m_process = process; m_module = managedModule; m_functions = new MDbgFunctionMgr(this); m_number = number; }
private ISymbolReader loadSymbolReader(CorModule module) { var loader = new SymbolLoader(); var reader = loader.GetSymbolReader(module); if (reader != null) _symbolReaders.Add(new KeyValuePair<string, ISymbolReader>(module.Name, reader)); return reader; }
public ModuleRVAReader(CorModule moduleToRead) { if (moduleToRead == null) { throw new ArgumentNullException("moduleToRead"); } m_module = moduleToRead; }
public void Set(CorModule module, ISymbolReader reader) { if (_breakpoint.File == null) { setBreakpointThroughModule(module, reader); return; } setBreakpointThroughDocument(module, reader); }
// // IEnumerator interface // public bool MoveNext () { ICorDebugModule[] a = new ICorDebugModule[1]; uint c = 0; int r = m_enum.Next ((uint) a.Length, a, out c); if (r==0 && c==1) // S_OK && we got 1 new element m_mod = new CorModule (a[0]); else m_mod = null; return m_mod != null; }
public ISymbolReader GetSymbolReader(CorModule module) { ISymbolReader reader = null; try { if (!module.IsDynamic && !module.IsInMemory) reader = getSymbolReader(module); } catch { } return reader; }
private bool attemptSetBreakpoint(ISymbolReader reader, ISymbolDocument doc, CorModule module) { if (!doc.URL.Equals(_breakpoint.File)) return false; var line = doc.FindClosestLine(_breakpoint.Line); var method = reader.GetMethodFromDocumentPosition(doc, line, _breakpoint.Column); var function = module.GetFunctionFromToken(method.Token.GetToken()); var wasSet = attemptToSetBreakpointThroughSequencePoints(doc, line, method, function); if (!wasSet) setBreakpointThroughFunction(function); return true; }
public PropertyReference (EvaluationContext ctx, PropertyInfo prop, CorValRef thisobj, CorType declaringType, CorValRef[] index) : base (ctx) { this.prop = prop; this.declaringType = declaringType; this.module = declaringType.Class.Module; this.index = index; if (!prop.GetGetMethod (true).IsStatic) this.thisobj = thisobj; loader = delegate { return ((CorValRef)Value).Val; }; }
// // IEnumerator interface // public bool MoveNext() { ICorDebugModule[] a = new ICorDebugModule[1]; uint c = 0; int r = m_enum.Next((uint)a.Length, a, out c); if (r == 0 && c == 1) // S_OK && we got 1 new element { m_mod = new CorModule(a[0]); } else { m_mod = null; } return(m_mod != null); }
public PropertyReference (EvaluationContext ctx, PropertyInfo prop, CorValRef thisobj, CorType declaringType, CorValRef[] index) : base (ctx) { this.prop = prop; this.declaringType = declaringType; if (declaringType.Type == CorElementType.ELEMENT_TYPE_ARRAY || declaringType.Type == CorElementType.ELEMENT_TYPE_SZARRAY) { this.module = ((CorType)((CorEvaluationContext)ctx).Adapter.GetType (ctx, "System.Object")).Class.Module; } else { this.module = declaringType.Class.Module; } this.index = index; if (!prop.GetGetMethod (true).IsStatic) this.thisobj = thisobj; flags = GetFlags (prop); loader = delegate { return ((CorValRef)Value).Val; }; }
private ISymbolReader getSymbolReader(CorModule module) { ISymbolReader reader = null; string sympath = Path.GetDirectoryName(module.Name); string moduleName = module.Name; try { SymbolBinder binder = new SymbolBinder(); var importer = new CorMetadataImport(module); reader = binder.GetReaderForFile(importer.RawCOMObject, moduleName, sympath); } catch (COMException ex) { if (ex.ErrorCode == unchecked((int)0x806D0014)) // E_PDB_CORRUPT { // Ignore it. // This may happen for mismatched pdbs } else throw; } return reader; }
public CorMetadataImport(CorModule managedModule) { // With a dump, m_importer may be null; metadata is not assured. m_importer = managedModule.GetMetaDataInterface<IMetadataImport>(); }
/// <summary> /// Releases all resources used by the MDbgModule. /// </summary> public void Dispose() { // Our funtion list may hold onto unmanaged SymbolMethod objects, so dispose that too. m_functions.Dispose(); m_functions = null; // Release unmanaged resources if (m_symReader != null) { // Disposing the symbol reader will release the file lock on the PDB (even when other // reader COM objects have yet to be released by the garbage collector). ((IDisposable)m_symReader).Dispose(); m_symReader = null; } m_module = null; m_importer = null; }
public void Reset () { m_enum.Reset (); m_mod = null; }
private void setBreakpoint(CorModule module, ISymbolReader reader) { var setter = new BreakpointSetter(_breakpoint); setter.Set(module, reader); }
/// <summary> /// Releases all resources used by the MDbgModule. /// </summary> public void Dispose() { // Our funtion list may hold onto unmanaged SymbolMethod objects, so dispose that too. m_functions.Dispose(); m_functions = null; // Release unmanaged resources. m_symReader = null; m_module = null; m_importer = null; }
public CorUpdateModuleSymbolsEventArgs(CorAppDomain appDomain, CorModule managedModule, IStream stream) : base(appDomain, managedModule) { m_stream = stream; }
private void stepIn(CorModule mod, CorStepper stepper) { var range = tryGetStepRanges(_activeThread, _symbolReaders.Find(r => r.Key.Equals(mod.Name)).Value); stepper.StepRange(true, range); }
internal void Unregister(CorModule managedModule) { Debug.Assert(m_items.ContainsKey(managedModule)); m_items.Remove(managedModule); }
internal CorActiveFunction(int ilOffset, CorFunction managedFunction, CorModule managedModule) { m_ilOffset = ilOffset; m_function = managedFunction; m_module = managedModule; }
private void Index(ISymbolReader reader, CorModule module) { if (readersByModule.ContainsKey(module)) readersByModule[module] = reader; else readersByModule.Add(module, reader); }
public void Reset() { m_enum.Reset(); m_mod = null; }
internal MDbgModule Register(CorModule managedModule) { MDbgModule mdbgModule; if (m_items.ContainsKey(managedModule)) { mdbgModule = (MDbgModule)m_items[managedModule]; return mdbgModule; } mdbgModule = new MDbgModule(m_process, managedModule, m_freeModuleNumber++); m_items.Add(managedModule, mdbgModule); return mdbgModule; }
public CorModuleEventArgs(CorAppDomain appDomain, CorModule managedModule) : base(appDomain) { m_managedModule = managedModule; }
/// <summary> /// Looks up a CorModule. /// </summary> /// <param name="managedModule">Which CorModule to lookup.</param> /// <returns>The coresponding MDbgModule.</returns> public MDbgModule Lookup(CorModule managedModule) { return (MDbgModule)m_items[managedModule]; }
private bool hasSymbolReader(CorModule mod) { return _symbolReaders.Exists(r => r.Key.Equals(mod.Name)); }
private void setBreakpointThroughModule(CorModule module, ISymbolReader reader) { var token = reader.UserEntryPoint; if (hasNoApplicationEntryPoint(token)) return; var method = reader.GetMethod(token); var function = module.GetFunctionFromToken(method.Token.GetToken()); var br = function.CreateBreakpoint(); br.Activate(true); }
public CorModuleEventArgs(CorAppDomain appDomain, CorModule managedModule, ManagedCallbackType callbackType) : base(appDomain, callbackType) { m_managedModule = managedModule; }
public ModuleRVAReader(CorModule moduleToRead) { if(moduleToRead == null) throw new ArgumentNullException("moduleToRead"); m_module = moduleToRead; }
public CorUpdateModuleSymbolsEventArgs(CorAppDomain appDomain, CorModule managedModule, IStream stream, ManagedCallbackType callbackType) : base(appDomain, managedModule, callbackType) { m_stream = stream; }
public CorMetadataImport(CorModule managedModule) { m_importer = managedModule.GetMetaDataInterface <IMetadataImport>(); Debug.Assert(m_importer != null); }