listdll не видит загруженные сборки
Я был почти уверен, что среда выполнения.NET загружает сборки как обычные библиотеки DLL. Но я обнаружил, что когда я подключаю "нативный" отладчик к управляемому процессу - я не вижу загруженных сборок.
То же самое относится и к инструменту Sysinternals - listdll. Он видит только загруженные библиотеки, а не сборки.
Интересно, как CLR загружает и выполняет код из сборок? У меня есть инструмент, похожий на listdll, чтобы просмотреть все управляемые процессы и вывести список всех загруженных сборок?
1 ответ
Прежде всего, сборка не является DLL. DLL - это физический файл, а сборка - логическая концепция платформы.NET. Одна DLL может содержать несколько сборок.
Есть много способов перечислить сборки, загруженные процессом, вот некоторые из них:
- С помощью SysInternals Process Explorer дважды щелкните процесс и перейдите на вкладку.NET Assemblies.
- Используя отладчик, такой как WinDbg/CDB/NTSD, присоедините к целевому процессу, загрузите расширение SOS, введя команду
.loadby sos clr
, затем введите!DumpDomain
команда для отображения сборок, загруженных в каждый домен приложений - С помощью отладчика MDbg присоединитесь к целевому процессу, затем введите команду
list assemblies