zoukankan      html  css  js  c++  java
  • 关于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工具的使用

  • 相关阅读:
    90.子类调用父类同名方法总结
    89.子类调用父类同名属性和方法
    88.子类调用父类同名属性和方法
    87.子类重写父类的同名属性和方法
    86.多继承
    85.单继承
    84.继承的概念
    day09
    83.魔法方法__del__()
    82.魔法方法__str__()
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8900202.html
Copyright © 2011-2022 走看看