加入收藏
设为首页
滁州电脑
网络维护
复印机维护
报修留言
滁州网络架设维护
|
无线网络维护
|
服务器维修维护
东芝复印机维修
|
理光复印机维修
当前位置:
首页
>
网络维护
>
服务器维修维护
站内搜索(标题)
站内搜索(正文)
站内搜索(来源)
站内搜索(作者)
淘宝网搜索
当当网搜索
卓越网搜索
狗狗搜索
百度搜索
Google搜索
服务器维修维护
摆脱DLL地狱困扰之目前的困境
时间:2013/11/9 8:48:29 作者:不详 来源:网络 查看:
132
评论:
0
在 Windows 系统中,动态库版本冲突实在是一个老大难的题目了,为了解决这个题目,除了使用大量现有的工具外,你还可以利用丰富的 Windows APIs 函数构造自己的调试工具和实用程序。作为例子,本文将提供三个这种类型的工具,讨论如何利用它们来解决动态库的冲突题目。这三个工具分别是:DllSpy——列出加载到系统中的所有 Dlls 以及所有使用这些 Dlls 的进程;ProcessSpy——列出系统中所有正在运行的进程以及它们正在使用的 Dlls;ProcessXP——显示 Windows XP 所有并发运行的会话(Sessions)清单;从所周知,动态库“地狱”(DLL Hell)已经不是什么新鲜玩意儿了,假如你使用第三方的 Dlls,肯定会碰到不少与它有关的题目,如找不到进口点,或者库版本不兼容等。.NET 中答应组件的并行执行,减少了产生这种题目的几率,但是假如你还没有升级到 .NET 环境,那怎么办?针对这种情况,可用的方法是用不同的工具跟踪 DLL 的依靠性。但是用标准工具跟踪时,你可能最后得不到所要的信息。很多工具都没有你需要的功能,比如自动写日志文件,跟踪分析,仅在控制台操纵脚本控制等。本文我们先用一些现有的工具来考察系统中的运行进程,然后系统地研究本文提供的三个工具:DllSpy, ProcessSpy 和 ProcessXP,以便在今后的开发或调试中使用这些工具和技术。现有的工具Depends.exe 是 Visual C++ 自带的一个工具。它可能是我们经常使用的工具中最简单的一个工具了,其功能是列出某个应用程序或 DLL 需要的 DLLs。这个程序在本站可以下载(更新版本请到下面这个地址下载:http://www.dependencywalker.com)。假如你需要看某个 DLL 或可执行文件的全路经,可以用它的上下文菜单进行设置:如图一:图一 察看全路经 对于静态加载的情况(即应用程序在链接过程中将 dlls 对应的 lib 文件链接到程序中),这个工具非常好用,但对于版本较新的系统,大多使用 COM 编程接口,或者说是用 COM 对象编程模型,而 COM 对象的实例化都是运行时加载或者说动态加载某个 DLL 文件,然后通过 LoadLibrary 和 GetProcAddress 调用其中某个特殊的函数来实现的。你不知道这个 DLL 是何时、从哪里被加载的。一种确定 DLLs 被动态加载的方法是找出需要被每一个进程加载的 DLL。Sysinternal 公司(http://www.sysinternals.com)提供了一个工具软件 ListDlls.exe。它是一个控制台程序,其图形用户界面(GUI)版本为 Process Explorer。如图二:除了列出被某个进程使用的 DLLs 之外,还可以用这个工具了解某个程序用到了哪个 kernel 对象,从版本3.11之后,Process Explorer 还可以让你在两个快照之间轻松扫描到新的或未使用的对象。有时候在你用 Process Explorer 扫描到某个进程之前,它可能已经被加载然后又在很短的时间内被卸载了。碰到这种情况时,你需要另外一种类型的工具,我们将在后文中讨论。为了操纵进程和 DLLs,首先你必须知道每一个被加载的 DLL 被哪些进程使用。本文的例子程序 DllSpy 实现目的即在于此。如图三所示:图三 DllSpy 运行画面DllSpy程序上面的窗格列出的是所有已经加载的 DLL,每选中一个DLL,在下面的窗格中就会列出使用该 DLL 的所有进程。而 ProcessSpy 例子程序的功能正好与 DllSpy 相反,它在上面窗格列出系统中所有的运行进程,每选中一个进程,在下面窗格便显示出此进程使用的所有 DLLs,如图四所示:图四 ProcessSpy 运行画面下面窗格还反映了 DLL 加载的地址是实际地址还是首选地址,以及它们的从属性是静态的还是动态的。这些工具的源代码和可执行程序都可以从本文的下载链接中下载,它们也许不完全满足你的需要,但可以作为技术参考,对编程工作肯定是有所裨益的。
上一篇:
滁州电信宽带_免费提速办法滁州企业带宽提速方法
下一篇:没有了
本类更新
11-17
琅琊区单位离职人员电脑密码破解方法Windows 7密码破解方法
11-17
滁州电信宽带_免费提速办法滁州企业带宽提速方法
11-9
Windows系统下VPN服务器故障排查
11-9
Windows下的Apache+PHP+MySql+虚拟主机设置全功略
11-9
Windows中IIS内FTP服务器高级配置
11-9
XP中CPU占用率100原因及解决方法
11-9
安全检查表 Windows 2003 打印服务器
11-9
安全检查表 Windows 2003 证书服务
11-9
安装Windows 2000十大留意事项
11-9
摆脱DLL地狱困扰之目前的困境
本类推荐
本类排行
11-17
琅琊区单位离职人员电脑密码破解方法Windows 7密码破解方法
11-17
滁州电信宽带_免费提速办法滁州企业带宽提速方法
11-9
安全检查表 Windows 2003 证书服务
11-9
Windows系统下VPN服务器故障排查
11-9
Windows下的Apache+PHP+MySql+虚拟主机设置全功略
11-9
Windows中IIS内FTP服务器高级配置
11-9
安装Windows 2000十大留意事项
11-9
安全检查表 Windows 2003 打印服务器
11-9
摆脱DLL地狱困扰之目前的困境
11-9
XP中CPU占用率100原因及解决方法
滁州电脑报修电话
滁州电脑维修,滁州电脑上门维修,滁州上门修电脑,滁州笔记本维修,滁州打印机维修,滁州上门维修打印机,从这里开始!
【滁州市电脑维修中心】|【电话:18655026336】|【滁州市打印机维修电脑维修
报修手机:13955014230
】【QQ:445233238】