• 关于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工具的使用

  • 相关阅读:
    移动端网络优化
    性能优化之Java(Android)代码优化
    性能优化之布局优化
    性能优化之数据库优化
    Android性能调优
    Android性能检测--traceview工具各个参数的意思
    RDIFramework.NET ━ .NET高速信息系统开发框架钜献 V2.9 版本震撼发布
    【C++基金会 04】vector详细解释
    Chromium-Dev一些缩写
    怎么样CSDN Blog投机和增加流量?
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8900202.html
Copyright © 2020-2023  润新知