码迷,mamicode.com
首页 > 其他好文 > 详细

Dependency Walker简介

时间:2015-04-03 20:56:30      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

如果软件复杂,那么依赖关系的整理是一个很严重的问题,软件设计到的模块可能存在多个版本,可能在不断的改动;如果版本对不上或者有依赖文件丢失,

那么就需要这样一个工具来协助判断哪里出了问题.

 

技术分享

 

 

软件的主窗口截图如下:

技术分享

 

截图的标号分别对应于:

1、  常用工具栏

技术分享

工具栏按钮功能分别是

Open(打开): 打开(dll/exe)以查看依赖关系,或者保存的视图

Save(保存): 保存打开的文件视图,保存的视图可以重新打开

Copy(拷贝): 将选中的内容拷贝为文本

Auto Expand(自动展开): 自动展开依赖树的所有节点

View Full Path(显示路径): 显示所有被依赖模块的绝对路径

Undecorate C++ Function(去除c++修饰符):所有的c++函数都被编译器进行修饰改名,这个按钮用于查看在头文件中声明的名字;关于c++的编译器改名可以google了解详情

View Modules In External Viewer(在新的试图中查看依赖关系): 同时查看多个dll/exe时可以用单独的窗口来查看各自的依赖关系

Properties(查看属性): 查看文件属性,等同于右键点击文件在弹出菜单里选择属性进行查看

Start Profile():[似乎是开始分析运行时依赖关系,未使用过此功能]

Stop Profile(停止分析) 

 

2、  依赖树

3、  调用接口列表

4、  所有接口列表

技术分享

技术分享

 

上边两个图分别是在目录树上选择不同文件时的状态;在第一个截图里;选择的是根节点 Swscale-2.dll;右侧的函数列表可以看到右上侧的列表是空的,

因为根节点被调用的关系在这里无法看到;右下侧的窗口则是当前选中的节点(根节点)的所有导出函数列表;当我们选择根节点下的子

节点时(根节点依赖子节点里的那些文件);右上侧显示子节点的导出函数有哪些是被子节点的父节点所调用;右下侧的窗口则显示所有子节点的导出函数;

如果我们展开子节点到更下一级子节点进行查看,右侧窗口的逻辑仍然与前述保持一致.

 

5、  所有依赖的模块列表

6、  警告和出错消息

我们从Swscale-2.dll所在目录下移除AVUTIL-52.dll;然后重新打开Swscale-2.dll;

技术分享

我们会看到一个弹出窗口告知遇到了依赖问题;依赖问题可能是依赖的文件找不到;或者依赖文件的版本不对;关掉对话框;我们会在左上侧的依赖树窗口

看到红色的子节点;表明该文件找不到或者版本不对;如果是版本不对;那么可以查看模块的绝对路径来看当前依赖的版本在那个目录下;

技术分享

 

备注:

 1、最后需要强调的是,这个软件有32位和64位两个版本;32位的版本只能查看32位dll/exe的依赖关系;64位软件只能查看64位dll/exe的依赖关系;

 2、现在很多软件是使用多种语言进行开发的;但Dependency Walker支持的不仅仅是c/c++; .net/vb等编写的windows平台的模块都可以进行分析;

      但对于其他语言起到的作用比较有限;

      技术分享

 3、更多内容可以查看软件的帮助文档;

Ref:

http://www.dependencywalker.com/

 

Dependency Walker简介

标签:

原文地址:http://www.cnblogs.com/zstang/p/4390943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!