В общем, я бы сказал, взгляните на команду .cordll
.В частности,
0:000> .cordll -u
CLR DLL status: No load attempts
для выгрузки ЦАП CLR и
0:000> .cordll -I coreclr -l -lp "C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.0\"
CLR DLL status: Loaded DLL f:\debug\symbols\mscordaccore_AMD64_AMD64_4.6.27110.04.dll\5BE756335c6000\mscordaccore_AMD64_AMD64_4.6.27110.04.dll
для загрузки ЦАП .NET Core по определенному пути.
В вашем сбоеdump, существует 2 версии CLR:
0:000> lm m *clr
start end module name
00007ffc`ac990000 00007ffc`acf56000 coreclr (deferred)
00007ffc`c2130000 00007ffc`c2b1d000 clr (deferred)
Подробности
0:000> lmvm clr
[...]
File version: 4.7.3190.0
0:000> lmvm coreclr
[...]
File version: 4.6.27110.4
Как показано в Visual Studio.
Если вы делаете обычные .loadby sos clr
, он загрузит SOS для версии 4.7, откуда clr
.К сожалению, .loadby sos coreclr
не будет работать так же, потому что поддержка отладки не предоставляется для .NET Core так же, как для .NET.
0:000> .loadby sos coreclr
The call to LoadLibrary(D:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.0\sos) failed
Win32 error 0n126 "The specified module could not be found."
Если вы установили соответствующий .NETБазовый пакет, в пути есть несколько версий SOS, например C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.0\
.Затем вы можете явно загрузить расширение из этого пути:
0:000> .load C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.2.0\sos.dll
Убедитесь, что вы выгружаете SOS из CLR:
0:000> .unload C:\...\sos.dll
И проверяете с помощью .chain
, что загружена только одна SOS.