VC++6里面的设置:
调试肯定在Debug模式中
由于DLL程序不能生成窗口等等原因不好调试,所以我们无法了解DLL程序的流程是怎么样的。下面简单介绍一个如何来调试DLL程序。
应该知道写DLL文件肯定是给某个应用程序使用的,如果没有程序用到它那它就没有存在的意义了。
既然知道DLL是给某个应用程序使用之后,那么如果应用程序开始运行了,在加载DLL后,必然会进入到DLL程序内部去,如果这个时候DLL程序中设了断点,而断点又是DLL程序运行必经之处,那么运行到这个地方,应该会停下来的。
那么调试是在应用程序中进行呢?还是DLL程序中进行呢?当然是DLL了 因为它就是我们调试的对象嘛。但必须要导入一个能够调用它的程序进来,通过应用程序的启动来达到调试的目的。
那么如何在DLL中设置应用程序呢?
很简单,打开VC 6.0 在vc里面打开要调试的DLL程序,点击菜单Project(中文版可能叫工程)->setting(设置) 可以看到一个对话框,左边Setting For要选Win32 Debug模式,Setting For下面是一个树形列表,显示的所有工程信息,选择一个你要调试的工程(不需要打开选择下面的.h,.cpp文件)
右边点击Debug主要设置三个地方:
Catagory:General
Executable for debug session:这个目录很重要,这里就是选择应用程序了(这个应用程序必须要用到这个DLL文件) 比如说 你的DLL文件目录在E盘,而你的应用程序在C:\Test\Test.exe这里,那么这个目录就必须填写C:\Test\Test.exe。
Wroking directory:就是填写工作的目录,这里填的应用程序的工作目录就是C:\Test ,就是包含应用程序的目录
这样设置好了以后,就可以开始调试啦,你在DLL中设置断点,然后点击调试,可能会出现询问的一个窗口,不要选择那个勾,直接OK就可以了。然后应用程序出现后,你就可以模拟各种情况,来观察DLL中的行为了。
还要加一些内容:按F5调试的时候怎么输入命令行参数?
int main (int argc, char *argv[]); 就是这个argv,怎么才能输入?
Project菜单中的“Settings…”,Debug选项卡,Program Arguments里边添写命令行参数。
VC++2005/2010里面的设置:
1、打开VS2005中的DLL工程
右击工程名--》properties-》configuration properties-》Debugging
在command中,输入包含EXE文件名的路径(比如c:\project\TestDll.exe);
或
在command中输入EXE文件名,在working directory中输入路径;
2、F5调试
其他调试步骤跟普通工程的调试方法相同。
注意用来调用DLL的exe文件所期望dll文件所在的路径,可以把exe文件和项目输出的dll文件放在一起。