Beispiel #1
0
        public void ReadSymbols()
        {
            if (string.IsNullOrEmpty(file_name))
            {
                throw new InvalidOperationException();
            }
            DefaultSymbolReaderProvider defaultSymbolReaderProvider = new DefaultSymbolReaderProvider(true);

            ReadSymbols(defaultSymbolReaderProvider.GetSymbolReader(this, file_name), true);
        }
Beispiel #2
0
        public void ReadSymbols()
        {
            if (string.IsNullOrEmpty(file_name))
            {
                throw new InvalidOperationException();
            }

            var provider = new DefaultSymbolReaderProvider(throwIfNoSymbol: true);

            ReadSymbols(provider.GetSymbolReader(this, file_name), throwIfSymbolsAreNotMaching: true);
        }
        private AssemblyDefinition SearchForSymbolsAndLoad()
        {
            AssemblyDefinition sourceAssembly = null;
            var provider = new DefaultSymbolReaderProvider(true);

            try
            {
                sourceAssembly = AssemblyDefinition.ReadAssembly(ModulePath);
                if (sourceAssembly != null)
                {
                    var symbolReader = provider
                                       .GetSymbolReader(sourceAssembly.MainModule, sourceAssembly.MainModule.FileName);
                    if (symbolReader != null)
                    {
                        sourceAssembly.MainModule.ReadSymbols(symbolReader);
                        if (sourceAssembly.MainModule.HasSymbols)
                        {
                            return(sourceAssembly);
                        }
                    }
                }
            }
            catch (Exception)
            {
            }

            foreach (var symbolFile in _symbolFileHelper.GetSymbolFileLocations(ModulePath, _commandLine))
            {
                try
                {
                    using (var stream = System.IO.File.Open(symbolFile, FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        var parameters = new ReaderParameters
                        {
                            SymbolReaderProvider         = provider,
                            ReadingMode                  = ReadingMode.Immediate,
                            ReadSymbols                  = true,
                            SymbolStream                 = stream,
                            ThrowIfSymbolsAreNotMatching = true
                        };
                        sourceAssembly = AssemblyDefinition.ReadAssembly(ModulePath, parameters);
                        if (sourceAssembly.MainModule.HasSymbols)
                        {
                            return(sourceAssembly);
                        }
                    }
                }
                catch (Exception)
                {
                }
            }

            return(null);
        }
Beispiel #4
0
        // Token: 0x0600003E RID: 62 RVA: 0x00002D90 File Offset: 0x00000F90
        private bool IsMyCode(string path)
        {
            string text = Path.ChangeExtension(path, "pdb");

            if (File.Exists(text))
            {
                if (File.Exists(path + ".mdb"))
                {
                    MonoSymbolFile monoSymbolFile = MonoSymbolFile.ReadSymbolFile(path + ".mdb");
                    return(File.Exists(monoSymbolFile.Sources.First <SourceFileEntry>().FileName));
                }
                if (StartInfo.IsPortablePdb(text))
                {
                    ModuleDefinition            moduleDefinition            = ModuleDefinition.ReadModule(path);
                    DefaultSymbolReaderProvider defaultSymbolReaderProvider = new DefaultSymbolReaderProvider(false);
                    moduleDefinition.ReadSymbols(defaultSymbolReaderProvider.GetSymbolReader(moduleDefinition, text));
                    return(File.Exists((from t in moduleDefinition.Types
                                        where t.HasMethods
                                        select t).First <TypeDefinition>().Methods.First <MethodDefinition>().DebugInformation.SequencePoints.First <SequencePoint>().Document.Url));
                }
            }
            return(false);
        }