【问题标题】:finding why a DLL is being loaded查找加载 DLL 的原因
【发布时间】:2009-08-12 17:54:22
【问题描述】:

我有一个包含各种 dll 和静态库的 winxp 进程。我们的库之一是调用 ms 调试 dll,我怀疑它是哪一个,但想在像 Process Explorer 这样的工具中证明它。如何获取我的流程树,以准确查看谁在加载哪些模块?

【问题讨论】:

    标签: c++ winapi dll process


    【解决方案1】:

    您可以使用Dependency Walker等工具

    【讨论】:

    • 看起来很酷,我得试试看。它是否适用于 .libs?
    • Dependency Walker既有静态分析模式也有动态分析模式。静态更容易使用,但不会像动态那样接听对 LoadLibrary 的调用。
    【解决方案2】:

    MS Visual Studio 附带的两个工具:

    Depends.exe 用于您的 .exe 和 .dll 将准确告诉您加载时依赖项是什么。

    在 .lib 文件上运行 dumpbin /directives 以告诉您静态库将哪些链接器指令传递给链接器。这将揭示来自那里的依赖关系。 它带有 Windows SDK“PSDK”,也可用于获取加载时间的依赖。

    如果事情在运行时被加载,请在 kernel32!LoadLibrary 上设置一个断点,并在它被触发时检查调用堆栈。 WinDbg 调试器(适用于 Windows 的 MS 调试工具)非常适合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 2012-10-01
      • 2011-07-05
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多