如何调试DLL程序??

lizhigang34 2008-09-04 10:24:01
刚接触这方面编程,请有经验的朋友分享你的编程经验..下面是我调试一个DLL:

比如我现在建立个工程DllLib,先编译这个DllLib,生成了DllLib.h, DllLib.lib, DllLib.dll

我再创建个工程专门用来测试上面这个工程,名为DllTest,然后我把上述的三个文件都复制到这个DllTest工程中,再加载导出的函

数,查看结果是否正确.这样,如果我的DllLib中没有错还好,要是有一些错误(非语法错)我怕就不好找到在哪了.

请问:你们在写DLL时是怎样调试的,越详细越好.
...全文
250 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhigang34 2008-09-05
  • 打赏
  • 举报
回复
谢谢各位热心回答,我知道怎么在DLL中设置断点了..
我还有个问题,就是我在DLL中调用了SetWindowsHookEx(),安装了钩子后,如果我没有显示的调用UnhookWindowsHookEx(g_hHook);这样的话,系统中是不是会留下这个钩子.我感觉会,因为我调试时,没有调用UnhookWindowsHookEx(g_hHook);
当我退出程序,试图删除程序所在的目录时,会出现"无法删除,文件正在被使用"
xsc2001 2008-09-05
  • 打赏
  • 举报
回复
把调用测试调用Dll的程序Exe输出到和dll在同一个目录下,这样两个工程都打上断点,调试dll工程,将其启动程序选定为你的测试程序,这样两个工程都可以同时进行调试。
cnzdgs 2008-09-05
  • 打赏
  • 举报
回复
如果DLL已经插入到其它的进程,就会留下。
scq2099yt 2008-09-04
  • 打赏
  • 举报
回复
写日志
xiaolonghong 2008-09-04
  • 打赏
  • 举报
回复
将DLL项目设为启动项,然后做个EXE文件,将此EXE文件设到DLL中,就可以设断点调试了。
zhong0111 2008-09-04
  • 打赏
  • 举报
回复
vs2008 项目->属性->调试
命令:rundll32.exe
参数: DllLib.dll test() //test()是导出函数
工作目录:dll的生成目录

ok,可以开工了

vc6差不多
oo_v_oo 2008-09-04
  • 打赏
  • 举报
回复
别把三个文件拷贝出来,直接把原来编译得到的DEBUG版本.lib添加到测试工程中
使用DEBUG方式下调用函数位置下断点,,,,
会思考的草 2008-09-04
  • 打赏
  • 举报
回复
写一个“驱动程序”来驱动你的dll,调用各个接口。最好可以设在同一个workspace下,这样可以很方便地step into进去。如果不是在同一个workspace下,记得把你的dll和相应的pdb文件都要拷过去。
lizhigang34 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 louifox 的回复:]
写个程序来调用你这个dll,就可以调试dll了.
[/Quote]
这个我知道,我是说有没有什么方法,可以节省调试程序时的时间,比如我的DLL中有好多个导出函数,我编程时要一个函数一个函数的调试,这样,每调试一个函数,我就要再重新把编译好的DllLib.dll复制到DllTest.exe下..很麻烦,有别的办法吗??
cnzdgs 2008-09-04
  • 打赏
  • 举报
回复
做个EXE项目来调用这个DLL,可以把两个项目放在同一个工作室里面,把输出路径设置为同一目录,以DLL为启动项目,设置DLL的项目属性,在命令行处输入EXE文件及路径,然后就可以调试了。
louifox 2008-09-04
  • 打赏
  • 举报
回复
写个程序来调用你这个dll,就可以调试dll了.

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧