listdll没有看到加载的程序集

时间:2017-08-30 19:06:22

标签: .net clr sysinternals

我非常确定.NET运行时将程序集作为普通dll加载。但我发现当我连接" native"对托管进程的调试器 - 我没有看到加载的程序集。

同样的事情适用于Sysinternals工具 - listdll。它只能看到dll加载,而不是程序集。

我想知道CLR如何加载并执行程序集中的代码? 我有一个类似于listdll的工具来遍历所有托管进程并列出所有已加载的程序集吗?

1 个答案:

答案 0 :(得分:1)

首先,程序集不是DLL。 DLL是物理文件,而程序集是.NET框架的逻辑概念。单个DLL可能包含多个程序集。

列出流程加载的程序集的方法有很多,以下是其中一些:

  1. 使用SysInternals Process Explorer,双击该过程并切换到.NET Assemblies选项卡。
  2. 使用WinDbg / CDB / NTSD之类的调试器,连接到目标进程,输入命令.loadby sos clr加载SOS扩展,然后输入!DumpDomain命令列出加载到每个AppDomain中的程序集
  3. 使用MDbg调试程序,附加到目标进程,然后输入命令list assemblies