Пример #1
0
        /// <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]);
            });
        }
Пример #2
0
        /// <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);
        }