关于DLL调试的两个工具(dependency walker和dumpbin.exe)
Dependency Walker工具:
该工具用来查看dll依赖库和依赖库内的函数。
左上角:模块依赖树,表示该dll所依赖的其它dll文件
右上角:导入函数,即与当前根模块有关系的函数(即根模块或根模块的子模块使用到的模块)
右中间:导出函数,即当前模块所有可以导出的函数(即可以被外界调用的函数)。
下面:模块列表视图,用于显示所依赖的dll模块的信息,如果加载错误会红色标出
最下面:日志视图,显示出错模块的信息
具体查看:如何使用查看DLL神器DependencyWalker
另一篇文章生动的讲解了dll原理和作用,主要观点:
1.dll可以包含图片,音频等各种资源(这是超过我的想象的);
2.哪些dll需要注册,哪些不需要;(打开dependcy查看,有HRESULT DllRegisterServer(void)和DllUnRegisterServer(void)函数的dll必须注册才能使用)
3.如何注册dll.(方法一:regsvr32.exe:注册命令:regsvr32 xx.dll;注销命令:regsvr32 /u xx.dll;方法二:程序内调用函数注册:LoadLibrary("xx.dll"),FARPROC pFun=GetProcAddress(hModule,"DllRegisterServer"))
4.一些windows自带dll的具体作用。
具体查看:Dependency Walker使用说明
dumpbin.exe工具:
该工具与上述工具类似,只不过没有窗口只有命令。
dumpbin.exe是vs2010自带工具,用的时候将它添加到环境变量中可以方便使用。
它的优点是可以查看多种类型文件:.obj文件、.lib库、.dll库、.exe执行文件。而Dependcy只能查看dll和exe文件。
如果查看a.dll库中包含哪些函数,可以使用:dumpbin /exports a.dll >1.txt
如果查看b.exe中加载了哪些动态库,可以使用:dumpbin /imports b.exe >2.txt
如果查看c.lib中包含哪些函数,可以使用:dumpbin /all /rawdata:none c.lib >3.txt
如果查看d.obj中包含哪些函数,可以使用:dumpbin /all /rawdata:none d.obj >4.txt
VS2010中dumpbin工具的使用
关于DLL调试的两个工具(dependency walker和dumpbin.exe)的更多相关文章
- 基于名称快速定位文件和文件夹的搜索工具Everything和dll依赖查询工具Dependency Walker
在工作中有时需要定位头文件.lib库文件.dll文件等的路径,自己去一个个盘符查找实在太麻烦,最近发现使用Everything这款工具很方便,下载地址为:下载 Everything 1.4.1.935 ...
- (转)Dependency Walker使用说明
在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录, ...
- Dependency Walker使用说明
Dependency Walker使用说明 标签: dllexewindowsvbqq工具 2010-03-29 11:10 25175人阅读 评论(22) 收藏 举报 分类: 基本常识(45) ...
- Dependency Walker使用说明 转载
转载地址:http://blog.csdn.net/swort_177/article/details/5426848?reload 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字 ...
- Dependency Walker使用说明[转]
在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录, ...
- PageHeap,调试Heap问题的工具
<Windows用户态程序高效排错>第二章主要介绍用户态调试相关的知识和工具.本文主要讲了PageHeap,调试Heap问题的工具. AD:51CTO学院:IT精品课程在线看! 2.4.2 ...
- Debug Hacks中文版——深入调试的技术和工具
关键词:gdb.strace.kprobe.uprobe.objdump.meminfo.valgrind.backtrace等. <Debugs Hacks中文版——深入调试的技术和工具> ...
- C++雾中风景番外篇3:GDB与Valgrind ,调试代码内存的工具
写 C++的同学想必有太多和内存打交道的血泪经验了,常常被 C++的内存问题搅的焦头烂额.(写 core 的经验了)有很多同学一见到 core 就两眼一抹黑,不知所措了.笔者 入"坑&quo ...
- Windows下程序打包发布时的小技巧(使用Dependency Walker侦测不理想,改用VS自带的dumpbin则万无一失,还可查看dll导出的函数)
Windows下开发的应用程序在发布时,需要将其依赖的一些动态链接库一起打进安装包里面去.这个时候,快速确定这个程序到底依赖哪些动态链接库变得非常重要.很久以前写过一篇关于Qt程序安装包制作的博客,里 ...
随机推荐
- 【转】利用Python中的mock库对Python代码进行模拟测试
出处 https://www.toptal.com/python/an-introduction-to-mocking-in-python http://www.oschina.net/transla ...
- JVM调优- jmap(转)
http://blog.csdn.net/fenglibing/article/details/6411953 1.介绍 打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些 ...
- 网页上10秒倒计时,完了后就自动跳转到另一个网页上html代码
用html代码的话就这样: <meta http-equiv="Refresh" content="10;URL=http://www.baidu.com" ...
- Composer的Autoload源码实现2——注册与运行
前言 上一篇 文章我们讲到了 Composer 自动加载功能的启动与初始化,经过启动与初始化,自动加载核心类对象已经获得了顶级命名空间与相应目录的映射,换句话说,如果有命名空间 'App\Consol ...
- iOS base64加密解密
本文转载至 http://jingyan.baidu.com/article/93f9803fff45c9e0e46f5596.html 从参考资料的地址中下载GTMBase64.zip库文件包,并解 ...
- 【BZOJ1513】[POI2006]Tet-Tetris 3D 二维线段树
[BZOJ1513][POI2006]Tet-Tetris 3D Description Task: Tetris 3D "Tetris" 游戏的作者决定做一个新的游戏, 一个三维 ...
- Frobenius inner product
https://en.wikipedia.org/wiki/Frobenius_inner_product Frobenius norm
- Java语言实现简单FTP软件------>辅助功能模块FTP站点管理的实现(十二)
1.FTP站点管理 点击"FTP站点管理"按钮,弹出对话框"FTP站点管理",如下图 1) 连接站点 在FTP站点管理面板上选好要连接的站点,点击"连 ...
- 9.Django里的数据同步migrations命令
一个关键的目录: 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,这里的内容一般不要手动去改 规定:app目录下必须要有migrations目录且目录 ...
- linux c编程:线程退出
在线程创建的时候pthread_exit都是调用的固定参数,我们先来看下如果用自动变量作为pthread_exit的参数时出现的问题 typedef struct foo{ int a; int b; ...