From 6d1792652bb8f642287eba3726e18d5f18af2e3f Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 13 Jul 2018 14:52:46 +0200 Subject: [PATCH] Fix #1178: Ignore PDB load errors. --- ILSpy/LoadedAssembly.cs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/ILSpy/LoadedAssembly.cs b/ILSpy/LoadedAssembly.cs index 2420dfa82..3f12fbd14 100644 --- a/ILSpy/LoadedAssembly.cs +++ b/ILSpy/LoadedAssembly.cs @@ -168,20 +168,24 @@ namespace ICSharpCode.ILSpy private void LoadSymbols(PEFile module) { - var reader = module.Reader; - // try to open portable pdb file/embedded pdb info: - if (reader.TryOpenAssociatedPortablePdb(fileName, OpenStream, out var provider, out var pdbFileName)) { - debugInfoProvider = new PortableDebugInfoProvider(pdbFileName, provider); - } else { - // search for pdb in same directory as dll - string pdbDirectory = Path.GetDirectoryName(fileName); - pdbFileName = Path.Combine(pdbDirectory, Path.GetFileNameWithoutExtension(fileName) + ".pdb"); - if (File.Exists(pdbFileName)) { - debugInfoProvider = new DiaSymNativeDebugInfoProvider(module, pdbFileName, OpenStream(pdbFileName)); - return; - } + try { + var reader = module.Reader; + // try to open portable pdb file/embedded pdb info: + if (reader.TryOpenAssociatedPortablePdb(fileName, OpenStream, out var provider, out var pdbFileName)) { + debugInfoProvider = new PortableDebugInfoProvider(pdbFileName, provider); + } else { + // search for pdb in same directory as dll + string pdbDirectory = Path.GetDirectoryName(fileName); + pdbFileName = Path.Combine(pdbDirectory, Path.GetFileNameWithoutExtension(fileName) + ".pdb"); + if (File.Exists(pdbFileName)) { + debugInfoProvider = new DiaSymNativeDebugInfoProvider(module, pdbFileName, OpenStream(pdbFileName)); + return; + } - // TODO: use symbol cache, get symbols from microsoft + // TODO: use symbol cache, get symbols from microsoft + } + } catch (BadImageFormatException) { + // Ignore PDB load errors } Stream OpenStream(string fileName)