【Dll调试】DLL调试方法

dll本身是没法运行的,必须在其它工程调用dll时候才会运行。

所以,调试dll首先要将调用dll的工程和dll工程联系起来。

解决方案中添加dll工程:

现在dll 和 应用程序两个工程就都在一个解决方案里了:

这时要对dll工程作些设置。

配置属性-常规-输出目录设置为 应用程序的生成目录 (调用dll的应用程序的目录?)

这样一来编译的dll、pbd文件就直接输出到对应应用程序的生成目录下面了

接下来依据一些文章说法,要在dll工程的属性配置:

调试中做些设置,

1、命令->写入应用程序的生成目录(exe目录)

2、命令->参数加入dll对外接口名。

但经我实验,不做这些设置也可以调试。

最后切记,一定要是debug模式才行!

我就是一直配置为release模式,一直没法进入dll工程断点浪费了很多时间。

转自:vs调试dll工程 - eques - 博客园

DLL有三种调试方法:

       方法1:

                如果动态链接库是自己编写的,并且测试代码也是自己编写的,那么此时我们可以将动态链接库和测试代码的工程建立在一起,在调试测试代码的时候,可以直接调用动态链接库中的代码。

我们在测试链接库项目中的100行打个断点,当执行到此处的时候,按F11就会进入到动态链接库项目中的源码中,就可以进行调试了。

   方法2:

如果动态链接库是自己编写的,而调用动态链接库的程序不是自己编写的,那么我们需要设置动态链接库中的项目属性,启动调用动态链接库的程序,形成链接之后,在调试的时候才可以数你在动态链接库中调试。如下图:

                

在项目属性的调试中设置完成对应要启动的exe之后,设置dll为启动项目,即可以运行调试。

方法3:

如果动态链接库不是自己编写,程序也不是自己编写,那么这个时候只能通过Ollydbg或者其他调试工具调试了。使用OD调试dll,需要保证OD目录下有loaddll.exe文件。

需要三个步骤如下:

1)我们可以先借助LordPE获取到导出表中的方法的RVA地址

2)借助OD获取到项目的基址

3)通过基址和RVA计算出来VA,就找到函数了

VS2015动态库静态加载时指定动态库位置的方法

在VS2015中静态加载动态库时,需要将库文件(DLL)拷贝到调用程序所在的路径下,如果所需动态库较多时,就会非常麻烦。可以在项目中指定应用程序搜索动态库的路径,这样就无需再将动态库文件进行拷贝了。

可以通过两种方法为应用程序指定搜索动态库的路径,一种是设置应用程序的“工作目录”,另外一种是设置应用程序的“环境”。

1 设置工作目录

使用VS2015打开调用DLL的应用程序,点击菜单栏“项目->XXX属性”,在“XXX属性”对话框的左侧选择“配置属性->调试”,在对话框右侧的“工作目录”中设置为DLL所在路径,如图1所示。

图1 设置项目的工作目录

2 设置环境变量

使用VS2015打开调用DLL的应用程序,点击菜单栏“项目->XXX属性”,在“XXX属性”对话框的左侧选择“配置属性->调试”,在对话框右侧的“环境”中输入如下代码

path=C:\DLL;

 其中,DLL是DLL文件所在的文件夹绝对路径,如图2所示。

图2 设置项目的环境变量

需要注意的是,在设置了项目的“环境”变量后,需要重新启动VS2015。
————————————————
版权声明:本文为CSDN博主「棉猴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hou09tian/article/details/72777922

posted on 2022-10-04 01:28  bdy  阅读(30)  评论(0编辑  收藏  举报

导航