this.logger = logger;
}
- internal bool TryResolveLocation (StackFrameData sfData, string mvid, string aotid)
+ internal bool TryResolveLocation (StackFrameData sfData)
{
- if (mvid == null)
+ if (sfData.Mvid == null)
return false;
- var assemblyLocProvider = GetOrCreateAssemblyLocationProvider (mvid);
+ var assemblyLocProvider = GetOrCreateAssemblyLocationProvider (sfData.Mvid);
if (assemblyLocProvider == null)
return false;
SeqPointInfo seqPointInfo = null;
- if (!sfData.IsILOffset && aotid != null)
- seqPointInfo = GetOrCreateSeqPointInfo (aotid);
+ if (!sfData.IsILOffset && sfData.Aotid != null)
+ seqPointInfo = GetOrCreateSeqPointInfo (sfData.Aotid);
return assemblyLocProvider.TryResolveLocation (sfData, seqPointInfo);
}
return null;
}
- assemblyPath = (exeFiles.Length > 0)? exeFiles[0] : dllFiles[0];
+ assemblyPath = exeFiles.Length > 0 ? exeFiles[0] : dllFiles[0];
var locProvider = new AssemblyLocationProvider (assemblyPath, logger);
var dllFiles = Directory.GetFiles (dir, "*.dll");
var assemblies = exeFiles.Concat (dllFiles);
foreach (var assemblyPath in assemblies) {
- var mdbPath = assemblyPath + ".mdb";
- if (!File.Exists (mdbPath)) {
- logger.LogWarning ("Directory {0} contains {1} but no mdb {2}.", dir, Path.GetFileName (assemblyPath), Path.GetFileName (mdbPath));
- // assemblies without mdb files are useless
+
+ // TODO: Ignore embedded pdb
+ var symbolFile = GetSymbolFile (assemblyPath);
+
+ if (symbolFile == null) {
+ logger.LogWarning ("Directory {0} contains {1} but no debug symbols file was found.", dir, Path.GetFileName (assemblyPath));
+ // assemblies without debug symbols are useless
continue;
}
if (Directory.Exists (mvidDir)) {
try {
Directory.Delete (mvidDir, true);
- } catch (DirectoryNotFoundException e) {}
+ } catch (DirectoryNotFoundException) {}
}
Directory.CreateDirectory (mvidDir);
var mvidAssemblyPath = Path.Combine (mvidDir, Path.GetFileName (assemblyPath));
File.Copy (assemblyPath, mvidAssemblyPath);
- var mvidMdbPath = Path.Combine (mvidDir, Path.GetFileName (mdbPath));
- File.Copy (mdbPath, mvidMdbPath);
+ var mvidDebugPath = Path.Combine (mvidDir, Path.GetFileName (symbolFile));
+ File.Copy (symbolFile, mvidDebugPath);
// TODO create MVID dir for non main modules with links to main module MVID
}
}
}
+
+ static string GetSymbolFile (string assembly)
+ {
+ var pdbName = Path.ChangeExtension (assembly, "pdb");
+ if (File.Exists (pdbName))
+ return pdbName;
+
+ var mdbName = assembly + ".mdb";
+
+ if (File.Exists (mdbName))
+ return mdbName;
+
+ return null;
+ }
}
}