【问题标题】:listdll doesn't see assemblies loadedlistdll 没有看到加载的程序集
【发布时间】:2017-08-30 19:06:22
【问题描述】:
我很确定 .NET 运行时将程序集作为普通 dll 加载。但是我发现当我将“本机”调试器连接到托管进程时 - 我没有看到加载的程序集。
同样的事情也适用于 Sysinternals 工具 - listdll。它只看到加载的 dll,而不是程序集。
我想知道 CLR 如何从程序集中加载和执行代码?
我有一个类似于 listdll 的工具来检查所有托管进程并列出所有加载的程序集吗?
【问题讨论】:
标签:
.net
clr
sysinternals
【解决方案1】:
首先,程序集不是 DLL。 DLL 是物理文件,而程序集是 .NET 框架的逻辑概念。一个 DLL 可能包含多个程序集。
列出进程加载的程序集的方法有很多种,以下是其中的一些:
- 使用 SysInternals Process Explorer,双击该进程并切换到 .NET Assemblies 选项卡。
- 使用WinDbg/CDB/NTSD等调试器,附加到目标进程,通过输入命令
.loadby sos clr加载SOS扩展,然后输入!DumpDomain命令列出加载到每个AppDomain中的程序集
- 使用MDbg调试器,附加到目标进程,然后输入命令
list assemblies