zcc1414

博客园 首页 联系 订阅 管理
DLL调试有以下3种方法 
1.同时使用DLL和应用程序的工程来调试 
将2个工程放在一个workspace里,可以使用Project/Insert   Project   into   Wordspace...弹出对话框选择,也可以在打开1个工程的情况下,直接使用File/new...选择Project创建另一个新工程,选中,Add   to   current   workspace
为了调试,2个工程都使用Win32   debug(或者   Unicode   Debug)版本,在Project/Settings/link   都选中Generate   Debug   Info
Project/Settings/debug/Category选择Additional   DLLs,添加要调试的Dll文件,Project/Dependencies..选择应用程序的工程以来与Dll的工程,当Dll工程改动后,编译链接生成新版本,为了不经常来回手工拷贝Dll文件,可在Dll工程中的Project/Setting/Post-Build   Step加上诸如 "copy   \debug\test.dll   app\debug "的命令,这样每编译1次都会自动拷贝。

如果是隐式链接Dll,需要从Dll中获得导出信息的头文件和编译生成的导入库lib文件。头文件用#include加入,Project/Add   to   project/Files...加入lib文件

2.使用应用程序的工程来调试Dll 
Project/Settings/debug/Category选择Additional   DLLs,添加要调试的Dll文件,如果是远程调试(Build/Debugger   Remote   Connection...中设置),必须给出完整的网络路径。
这个Dll必须是编译成Win32   Debug(或   Unicode   Debug)版本的,包含有调试信息,这样尽管Dll的源程序不是这个工程的组成部分,也可以在应用程序和Dll中设置断点。

3.使用Dll的工程来调试Dll 
打开Dll工程,Project/Settings/Debug/Category选择General,为这个Dll指定1个可执行程序,可以就是另外开发的的使用该Dll的用户程序。

具体调试过程中,可以从应用程序单步跟踪到Dll中,在Dll中设置断点,在应用程序中调用Dll中的程序,执行到这个断点时,就会中断,便于检查此时Dll的状态。通过改变、设置应用程序执行环境和不同执行路径,为Dll程序调试提供多种检查方式。

我的方法:

两个·工程  一个DLL   一个EXE程序

把两个整在一个工程里,EXE程序设置DLL

在程序中调用这个DLL   用绝对路径LoadLibraryA("C:\\xxxx\\xxx\\xxxx\\xxx.dll");

在EXE DLL中下断  即可调试了


今天偶然发现新大路了   调试时直接 在DLLMain下 面来个__asm int 3 ; 就能附加调试了!

例子:

http://blog.csdn.net/zcc1414/article/details/12124771







posted on 2013-09-29 23:03  zcc1414  阅读(1004)  评论(0编辑  收藏  举报