【调试】DLL EXE 调试技巧
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进程,附加即可。
【调试】DLL EXE 调试技巧的更多相关文章
- Delphi调试DLL 不能调试 不能进入调试 注意!!!
如何调试DLL,在这里就不再赘述了,但是,今天就碰到了一个特别奇怪的问题,参数设置正确,就是不能调试?? 通过上网查资料,发现了问题,注意: 1, 将Project主菜单的Project Option ...
- 方法 - 调试Dll方法
1.exe加载dll 2.Dll属性设置2.1运行exe生成Debug/...exe2.2属性->调试->命令-> 改成 ./Debug/调试Dll.exe ../Debug/调试D ...
- 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试
from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...
- delphi 2010 动态链接库DLL断点调试
DELPHI 2010 动态链接库DLL断点调试 马根峰 (广东联合电子服务股份有限公司,广州 510300) 摘要:本文详细介绍了Delphi 2010中的动态链接库DLL断点调试技术 关键词:DE ...
- VC6.0 调试.dll文件
对于自己制作的.DLL文件,一直没有比较好的调试方法,其实是知道的太少. 下面就说说VC6.0下面 怎么调试DLL文件: 首先得有一个调用DLL文件的可执行程序,然后调用这个可执行程序. 在工程上 右 ...
- vs调试dll工程
dll本身是没法运行的,必须在其它工程调用dll时候才会运行. 所以,调试dll首先要将调用dll的工程和dll工程联系起来. 解决方案中添加dll工程: 现在dll 和 应用程序两个工程就都在一个解 ...
- vs单独调试dll
用生成好的exe单独调试dll,右键项目属性->调试->命令->选择exe
- DLL断点调试
一般来说调试DLL是把DLL工程和exe工程放到一个解决方案里.如果不放到一个解决方案里,那两者的输出目录要一致,属性-连接器-常规-输出目录.保证dll,dll的pdb,exe,exe的pdb在一个 ...
- vs2008 c#项目调试dll源码,问题:“若要调试此模块,请将其项目生成配置更改为“调试”模式” 的解决方案
情况: 1:有程序 Trans.exe 的vs2008 c#源码:Trans.exe项目里引用了 Water.dll: 2:有Water.dll的项目源码: 3:想在Trans.exe里调试Water ...
随机推荐
- C++:构造函数默认的参数声明
C++函数的默认参数指的是在函数声明或者定义时给形式参数指定默认值,从而在调用参数时可以少写参数,少掉的参数用默认值代替.LZ的Display()函数的代码看起来似乎是可以有s2和s3两个默认参数,那 ...
- JSP的设计模式
1.JSP模型1(JSP+JavaBean) JSP页面负责处理请求,并将响应发送给客户端.JSP页面文件包括:login.html.loginchk.jsp.welcome.jsp.JavaBean ...
- javascript中对象的属性的特性
1.ES5的属性特性包括下面六个: configurable: 表示能否通过delete来删除属性从而重新定义属性,能够修改属性的特性,默认为true enumberable: 表示是否能通过for- ...
- JavaScript —— 如何判断一个非数字输入
在页面里,如何用JS去判断一个用户输入是不是一个数字. 你是不是首先想到了正则表达式? JS里有个现成的函数,isNaN(x) isNaN(x) 函数可用于判断其参数是否是 NaN(Not a Num ...
- Objective-C编码规范:26个方面解决iOS开发问题
介绍 我们制定Objective-C编码规范的原因是我们能够在我们的书,教程和初学者工具包的代码保持优雅和一致.即使我们有很多不同的作者来完成不同的书籍. 这里编码规范有可能与你看到的其他Object ...
- Eclipse引用Library失败的问题
整个导入流程严格按照guide的内容操作,但是始终无法导入,设置导入后项目中不出现相关的Library project.在设置完library之后重新打开始始终显示关联错误,就是reference那里 ...
- HDU 1074 Doing Homework
第一次做这道题大概是半个月前了吧,状压DP一个很新鲜的名词 当时看题解怎么也看不懂,现在看懂了以后还是很简单的 所谓状态压缩就是用一个整数的二进制来表示一个状态,比如有三个作业 000表示一科作业也没 ...
- UVa 10791 Minimum Sum LCM【唯一分解定理】
题意:给出n,求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小 看的紫书--- 用唯一分解定理,n=(a1)^p1*(a2)^p2---*(ak)^pk,当每一个(ak)^pk作为一个单 ...
- Codeforces 279 B Books
题意:给出n本书,总的时间t,每本书的阅读时间a[i],必须按照顺序来阅读,问最多能够阅读多少本书 有点像紫书的第七章讲的那个滑动区间貌似 维护一个区间的消耗的时间小于等于t,然后维护一个区间的最大值 ...
- js设置与获取Cookie
/*设置与获取Cookie*/ var Cookie ={} Cookie.write = function(key, value, duration){ var d = new Date(); d. ...