From 4faea107eb45fc844e96d1e7c7009c8cec1e56ba Mon Sep 17 00:00:00 2001 From: Eusebiu Marcu Date: Thu, 31 Mar 2011 16:48:55 +0300 Subject: [PATCH] Fix debugging applications that targeted different .NET versions (e.g. 2.0 and 4.0). --- Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs b/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs index 35e25b4f2..eda4a70f5 100644 --- a/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs +++ b/Debugger/ILSpy.Debugger/Services/Debugger/WindowsDebugger.cs @@ -838,12 +838,13 @@ namespace ILSpy.Debugger.Services void DecompileOnDemand(StackFrame frame) { + string debuggeeVersion = frame.MethodInfo.DebugModule.Process.DebuggeeVersion.Substring(1, 3); // should retrieve 2.0, 3.0, 4.0 var debugType = (DebugType)frame.MethodInfo.DeclaringType; uint token = (uint)frame.MethodInfo.MetadataToken; int ilOffset = frame.IP; - string fullName = debugType.FullNameWithoutGenericArguments; fullName = fullName.Replace("+", "/"); + if (DebugData.LoadedAssemblies == null) throw new NullReferenceException("No DebugData assemblies!"); else { @@ -851,7 +852,7 @@ namespace ILSpy.Debugger.Services TypeDefinition typeDef = null; TypeDefinition nestedTypeDef = null; - foreach (var assembly in DebugData.LoadedAssemblies) { + foreach (var assembly in DebugData.LoadedAssemblies.Where(a => a.Name.Version.ToString().StartsWith(debuggeeVersion))) { foreach (var module in assembly.Modules) { var localType = module.GetType(fullName); if (localType != null) {