【问题标题】:Dependency walker hangs依赖步行者挂起
【发布时间】:2017-03-25 18:51:28
【问题描述】:

my.xll 插件在我的客户端 PC 上加载时出现问题。 它在启动时使 Excel 崩溃(可能是因为缺少依赖的 dll)。

我知道可以在配置文件模式下使用dependency walker 来找出.exe 运行时加载的dll。 当我在分析 Excel 时尝试依赖 walker 挂起时,我无法找出原因。

在命令窗口中我运行了这个:

C:\Program Files (x86)\Windows Kits\8.1\Tools\x86>start /wait depends.exe /c /f:1 /pb /pp:1 /pg:1 /oc:d:\temp \Log.txt "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"

但它挂起。

我正在使用依赖walker 2.2.9600 x86、Windows 8.1 x86、office 2010 x86 版本

我还尝试使用全新安装的 win 8.1 和 Office 2010 设置 VM 机器,但加载 .xll 时 XL 不会在该机器上崩溃。

我在另一台机器上工作 Windows 10 x64、office 2013 x64 和 dependency walker x64。我可以分析 Excel。

注意:我最终改用了 Sysinternals Process Explorer。有点复杂,但有效。

【问题讨论】:

  • 您也可以尝试 Process Monitor 和/或 WinDbg,尝试在崩溃前查看正在加载或尝试加载的内容。客户的机器是否安装了正确的 CRT?你的插件是针对哪个编译的?
  • 我会尝试并告诉你。
  • 无论我打开哪个 .exe 或 .dll,它都会挂起(在 Windows 10 下)。据我记得它在 Windows 7 下工作。

标签: dll windows-8.1 office-2010 depends


【解决方案1】:

重新配置模块搜索顺序。尝试禁用除 KnownDLLs 和应用程序目录之外的所有文件,然后打开文件进行检查。 Dependency walker 构建了非常大的子依赖项列表,并且 GUI 元素挂在此操作上:(

【讨论】:

    【解决方案2】:

    Microsoft 一直在非常缓慢地向 Windows 操作系统 API 库添加模块化、版本控制和间接性。1 这项工作始于 Windows 7,但只有在最近的 Windows 10 版本中才有此举措一些核心的 win32/kernel 库,基本上所有传统的 Windows 二进制文件都链接到和使用。

    幼稚的依赖遍历器会为自己创建一个图组合爆炸,他们会尝试渲染完整的依赖图,而不需要一些额外的逻辑来短路这个间接层,或者将图搜索的深度限制为按需提供深度。如果你的程序比较简单,depends.exe 最终会唤醒并为你渲染依赖图,但可能需要几个小时。

    我不知道depends.exe 的作者是否打算更新它,但与此同时,正如安德鲁在他的回答中指出的那样,GitHub 上的lucasg/Dependencies 项目似乎没有遇到同样的问题。

    另请参阅此 SO 帖子:Dependency Walker: missing dlls

    【讨论】:

      【解决方案3】:

      我目前使用的是 Windows 10 build 1809,并且对于我尝试使用的每个 dll,depends.exe 都会挂起。 depends 主页显示“Dependency Walker 在 Windows 95、98、Me、NT、2000、XP、2003、Vista、7 和 8 上运行”,所以我猜它不受支持。

      试试 Dependencies - 一个开源的现代 Dependency Walker,它对我来说很好用。

      【讨论】:

      • 对我也很好,谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2019-06-07
      相关资源
      最近更新 更多