У меня есть приложение 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, но, похоже, ничего не изменилось. При повторном выполнении команд "! Threads" я получаю
"Статус DLL CLR: загруженная DLL C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ mscordacwks.dll
Не удалось запросить threadstore "
Я видел еще одну запись в стеке потока вокруг этой проблемы. Но, к счастью для него, проблема исчезла до того, как было предложено решение, и это не дубликат этой записи
Будем весьма благодарны за любые подсказки, которые помогут мне использовать расширение 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