【问题标题】: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 可能包含多个程序集。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多