Analyzing Dependencies with Dependency Walker
目录:
有时正常的故障排除步骤不会削减它。我们可能需要超越 - 更像是法医故障排除。今天我会写一个有助于我们这样做的工具。 Dependency Walker 是一个分析Windows应用程序依赖关系的工具,例如函数,模块等。它构建了一个exe,dll,sys等所有依赖模块的分层树。
Dependency Walker
Dependency Walker可以帮助您排除应用程序错误,文件注册错误,内存访问冲突和无效页面错误。
如果您的特定程序未加载或服务失败,Dependency Walker特别有用开始时指向一个特定的DLL的错误。在这种情况下,您可以在Dependency Walker中加载该程序或dll,查看哪个文件无法加载或哪个模块导致问题 - 然后修复它。
程序不仅加载模块,而且还加载扫描潜在的错误。根据帮助文件,它执行以下作业:
- 检测丢失的文件。这些是作为对另一个模块的依赖所需的文件。此问题的症状是“在指定路径中找不到动态链接库BAR.DLL …”错误。
- 检测到无效文件。这包括不符合Win32或Win64的文件和损坏的文件。此问题的症状是“应用程序或DLL BAR.EXE不是有效的Windows映像”错误。
- 检测导入/导出不匹配。验证模块导入的所有函数实际上是从相关模块导出的。所有未解析的导入功能都会标记为错误。此问题的症状是“程序入口点FOO无法位于动态链接库BAR.DLL”错误中。
- 检测循环依赖性错误。这是一个非常罕见的错误,但可以在转发函数时发生。
- 检测模块的CPU类型不匹配。如果为一个CPU构建的模块尝试加载为其他CPU构建的模块,则会发生这种情况
- 通过验证模块校验和来检测是否有模块在构建后被修改,以检测校验和的不一致性。
- 通过以下方式检测模块冲突:突出显示无法加载到其首选基地址的任何模块
- 通过跟踪对模块入口点的调用并查找错误来检测模块初始化失败
- Dependency Walker还可以执行应用程序的运行时配置文件以检测动态加载模块和模块初始化失败。
例如,我前一天在帮客户 - 她正在加载Internet Explorer,但IE仍然崩溃,没有任何特定的错误。我们已经完成了大部分基本的故障排除工作,例如禁用附件和工具栏,将IE重置为默认设置等。但仍然崩溃。这意味着Internet Explorer正常运行所需的一个或多个文件会产生问题。使用Dependency Walker总是很难排除这种情况,但我们可以看到是否有一个依赖文件有问题。
因此,我在Dependency Walker中加载了Internet Explorer。
接下来,我们逐一扩展列表
然后我浏览了每个模块,看看我能否在那里找到可疑的东西。我滚动浏览模块,很幸运地发现问题。
我发现IEFRAME.dll文件丢失。所以我去了,并从Windows安装DVD更换文件。这解决了问题。现在Internet Explorer不再崩溃
我希望这会告诉你使用该工具发现可能的依赖性错误是多么容易
如何使用Dependency Walker
要使用Dependency Walker调查错误,可以执行以下步骤:
- 启动依赖关系Walker
- 单击文件菜单上的打开以加载问题文件
- 在“查看”菜单中,单击开始分析。在配置文件模块对话框出现
- 键入任何开关,程序参数,你想要的其他选项,然后点击确定。
Dependency Walker将在发生错误之前注入dwinject.dll,并记录发生时的事件错误
Dependency Walker download
您可以从 下载Dependency Walker