/// <summary> /// Initializes a new instance of the <see cref="ClrMdModule"/> class. /// </summary> /// <param name="provider">The CLR provider.</param> /// <param name="clrModule">The CLR module.</param> public ClrMdModule(CLR.ClrMdProvider provider, Microsoft.Diagnostics.Runtime.ClrModule clrModule) { Provider = provider; ClrModule = clrModule; clrPdbReader = SimpleCache.Create(() => { try { string pdbPath = ClrModule.Runtime.DataTarget.SymbolLocator.FindPdb(ClrModule.Pdb); if (!string.IsNullOrEmpty(pdbPath)) { return(new Microsoft.Diagnostics.Runtime.Utilities.Pdb.PdbReader(pdbPath)); } } catch (Exception) { } return(null); }); module = SimpleCache.Create(() => { return(Provider.GetProcess(ClrModule.Runtime)?.ClrModuleCache[this]); }); }
/// <summary> /// Converts CLR module to Engine interface. /// </summary> /// <param name="clrModule">The CLR module.</param> internal ClrMdModule FromClrModule(Microsoft.Diagnostics.Runtime.ClrModule clrModule) { if (clrModule != null) { return(clrModules[clrModule]); } return(null); }