【Dll调试】DLL调试方法
dll本身是没法运行的,必须在其它工程调用dll时候才会运行。
所以,调试dll首先要将调用dll的工程和dll工程联系起来。
解决方案中添加dll工程:
现在dll 和 应用程序两个工程就都在一个解决方案里了:
这时要对dll工程作些设置。
配置属性-常规-输出目录设置为 应用程序的生成目录 (调用dll的应用程序的目录?)
这样一来编译的dll、pbd文件就直接输出到对应应用程序的生成目录下面了
接下来依据一些文章说法,要在dll工程的属性配置:
调试中做些设置,
1、命令->写入应用程序的生成目录(exe目录)
2、命令->参数加入dll对外接口名。
但经我实验,不做这些设置也可以调试。
最后切记,一定要是debug模式才行!
我就是一直配置为release模式,一直没法进入dll工程断点浪费了很多时间。
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