Команды SOS не работают при отладке процесса в реальном времени, в котором загружено несколько версий CLR

У меня есть приложение ASP.net 2.0, которое я пытаюсь отлаживать в реальном времени с помощью Windbg и SOS.dll. Когда я подключаю отладчик к процессу, я вижу, что он загружает версии CLR 2.0 и 4.0. [Mscorwks.dll и CLR.dll]. Я загружаю свой SOS с помощью - .loadby sos mscorwks. После этого ни одна из моих команд SOS не работает. Я получаю сообщения «Не удалось запросить хранилище потоков», «Не удалось получить информацию из системного домена» и т. Д.

Я узнал, что это связано с несоответствием в mscordacwks.dll другой версии CLR. Но все решения, которые я нашел в Google для загрузки правильной версии mscordacwks с помощью команды cordll, не помогли решить мою проблему. В частности, я использовал .cordll –ve –lp, но, похоже, это не имеет никакого значения. При повторном выполнении команды «! Thread» я получаю

«Состояние DLL CLR: загруженная DLL C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ mscordacwks.dll

Не удалось запросить хранилище потоков»

Я видел другую запись в stackoverflow по этой проблеме. Но, к счастью для него, проблема исчезла до того, как было предложено решение, а также это не дубликат этой записи

Любые подсказки, которые помогут мне использовать расширение SOS с двумя версиями CLR, загруженными в мой процесс, были бы очень признательны.

Поведение при загрузке версий MSCORDACWKS выглядит следующим образом -

**0:033>** .cordll -e 
CLR DLL status: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll 
**0:033>** .cordll -ve -u -lp C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll
 CLR DLL status: No load attempts 
**0:033>** .cordll -e
 CLR DLL status: No load attempts
 **0:033>** !threads 
CLRDLL: Loaded DLL C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll Failed to request ThreadStore 

6
задан Community 23 May 2017 в 12:06
поделиться