const string DesktopRuntimeModuleName = "clr";
- private static readonly string s_coreclrModuleName;
-
internal readonly IDataReader DataReader;
internal readonly AnalyzeContext AnalyzeContext;
static SOSHost()
{
AssemblyResolver.Enable();
-
- if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) {
- s_coreclrModuleName = "coreclr";
- }
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) {
- s_coreclrModuleName = "libcoreclr.so";
- }
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) {
- s_coreclrModuleName = "libcoreclr.dylib";
- }
}
/// <summary>
internal static bool IsCoreClrRuntimeModule(ModuleInfo module)
{
- return IsModuleEqual(module, s_coreclrModuleName);
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
+ {
+ return IsModuleEqual(module, "coreclr") || IsModuleEqual(module, "libcoreclr");
+ }
+ else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
+ {
+ return IsModuleEqual(module, "libcoreclr.so");
+ }
+ else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
+ {
+ return IsModuleEqual(module, "libcoreclr.dylib");
+ }
+ return false;
}
internal static bool IsDesktopRuntimeModule(ModuleInfo module)
try
{
IEnumerable<SymbolStoreKey> keys = generator.GetKeys(flags);
- foreach (SymbolStoreKey key in keys)
+ foreach (SymbolStoreKey forKey in keys)
{
+ SymbolStoreKey key = forKey;
+ if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && key.FullPathName.Equals("libmscordaccore.so"))
+ {
+ // We are opening a Linux dump on Windows
+ // We need to use the Windows index and filename
+ key = new SymbolStoreKey(key.Index.Replace("libmscordaccore.so", "mscordaccore.dll"),
+ "mscordaccore.dll",
+ key.IsClrSpecialFile,
+ key.PdbChecksums);
+ }
string moduleFileName = Path.GetFileName(key.FullPathName);
s_tracer.Verbose("{0} {1}", key.FullPathName, key.Index);
// We are opening a Linux dump on Windows
// We need to use the Windows index and filename
key = new SymbolStoreKey(key.Index.Replace("libmscordaccore.so", "mscordaccore.dll"),
- key.FullPathName.Replace("libmscordaccore.so", "mscordaccore.dll"));
+ key.FullPathName.Replace("libmscordaccore.so", "mscordaccore.dll"),
+ key.IsClrSpecialFile,
+ key.PdbChecksums);
}
}
else