分享

【调试】DLL EXE 调试技巧

 imelee 2017-09-29

 

 

0、随便说点

    最近因为一些原因一直都没有更新博客,从今天开始要逐渐恢复了,也是对自己的鞭策。

 

1、本文目标

    本文要说在有DLL 和 EXE源码的情况下调试DLL 和 EXE, 工具是VC++2010,相信很多同学都会,肯定也有很多同学不会。 自己也曾经因为不懂怎么调试DLL、ActiveX控件而在调试的时候费很多劲。

今天就来说一说一个简单的调试方法。

 

2、应用场景

    一个DLL:add.dll, 导出了一个函数Add计算两个数的和

    一个EXE:useadd.exe,使用add.dll提供导出函数来计算结果

    假设DLL 和 EXE在不同的解决方案中(在同一个解决方案中的方法是一样的),现在要在EXE的源码中调试进DLL的源码。   同时又分两种情况:①运行EXE ②调试EXE    下面会分别说明。

 

3、运行EXE 调试进DLL

    为了不让EXE的代码一下执行过DLL中的导出函数,在该函数之前先加行代码暂停(比如MessageBox, cin输入流等)

    ①启动EXE

    ②在EXE中代码执行到DLL导出函数之前,在DLL项目代码中添加断点

    ③选择调试菜单--附加到进程--选择之前的EXE进程

    ④继续让EXE中代码执行即可

 

 

 

 

 

 

 

 

4、调试EXE  调试进DLL

    这种情况下当调试DLL附加到EXE进程时,【附加】按钮是灰色不可用的,因为此时EXE正在被调试,其承载进程是VS调试器,所以应该在进程列表中选择  进行附加,其他步骤相同。

 

 

 

 

 

 

 

 

5、补充

    调试ActiveX控件类似

 

6、再次补充

    我们通常会遇到这样一种情况:【运行】(而非调试)EXE,发现有些运行结果不是期望的,这个时候我们就要【调试】一下看问题在哪里。

这个时候怎么办呢?  关掉EXE进程,如何重新F5?? 呵呵, 我以前就是这样。。  

   应该这样:在VS打开的项目里,还是点击 菜单【调试】-【附加到进程】-在进程列表中选择当前项目对应的EXE进程,附加即可。

 


https://zhidao.baidu.com/question/1689557997454061108.html

Setting-Debug-Executable for debug
session中加入你的.exe的路径和名字。
可以在dll中设置断点,.exe程序必须要调用dll中函数。
方法2: 有个更好的方法:(我也没试过)在settings/debug中category选additionaldlls,
然后将你要调试的dll加进来。这样,即使你用loadlibrary动态加载dll,也可以加断点了。
方法3: 直接运行DLL就行了,那会让你指定调试程序,你把你准备调用它的程序的exe文件指给它,断点运行就可以了.



http://blog.csdn.net/qingzai_/article/details/45348613
dll调试方法:


1.把最新生成的dll和pdb放到 启动这个dll 的进程目录下
2.启动这个进程
3.然后在dll 的项目中  调试选项-》附加到进程-》选择启动的这个进程
4.断点调试




非本进程dll错误处理方式:
0.把相关dll的pdb调试文件放到和的dll同目录
1.启动进程
2.找到调试-》窗口-》模块  (本进程所有相关的外部加载的dll)(找到出问题的dll)
3.在模块里面的符号状态一项 右键加载符号-》选择相关pdb
4.调用调试信息直接查看错误代码






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多