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 调试技巧的更多相关文章

  1. Delphi调试DLL 不能调试 不能进入调试 注意!!!

    如何调试DLL,在这里就不再赘述了,但是,今天就碰到了一个特别奇怪的问题,参数设置正确,就是不能调试?? 通过上网查资料,发现了问题,注意: 1, 将Project主菜单的Project Option ...

  2. 方法 - 调试Dll方法

    1.exe加载dll 2.Dll属性设置2.1运行exe生成Debug/...exe2.2属性->调试->命令-> 改成 ./Debug/调试Dll.exe ../Debug/调试D ...

  3. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  4. delphi 2010 动态链接库DLL断点调试

    DELPHI 2010 动态链接库DLL断点调试 马根峰 (广东联合电子服务股份有限公司,广州 510300) 摘要:本文详细介绍了Delphi 2010中的动态链接库DLL断点调试技术 关键词:DE ...

  5. VC6.0 调试.dll文件

    对于自己制作的.DLL文件,一直没有比较好的调试方法,其实是知道的太少. 下面就说说VC6.0下面 怎么调试DLL文件: 首先得有一个调用DLL文件的可执行程序,然后调用这个可执行程序. 在工程上 右 ...

  6. vs调试dll工程

    dll本身是没法运行的,必须在其它工程调用dll时候才会运行. 所以,调试dll首先要将调用dll的工程和dll工程联系起来. 解决方案中添加dll工程: 现在dll 和 应用程序两个工程就都在一个解 ...

  7. vs单独调试dll

    用生成好的exe单独调试dll,右键项目属性->调试->命令->选择exe

  8. DLL断点调试

    一般来说调试DLL是把DLL工程和exe工程放到一个解决方案里.如果不放到一个解决方案里,那两者的输出目录要一致,属性-连接器-常规-输出目录.保证dll,dll的pdb,exe,exe的pdb在一个 ...

  9. vs2008 c#项目调试dll源码,问题:“若要调试此模块,请将其项目生成配置更改为“调试”模式” 的解决方案

    情况: 1:有程序 Trans.exe 的vs2008 c#源码:Trans.exe项目里引用了 Water.dll: 2:有Water.dll的项目源码: 3:想在Trans.exe里调试Water ...

随机推荐

  1. sed文本处理知识点整理

    参考资料:http://man.linuxde.net/sed    <鸟哥的私房菜> sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用.sed 后面接的操作 ...

  2. Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  3. 《OD大数据实战》驴妈妈旅游网大型离线数据电商分析平台

    一.环境搭建 1. <OD大数据实战>Hadoop伪分布式环境搭建 2. <OD大数据实战>Hive环境搭建 3. <OD大数据实战>Sqoop入门实例 4. &l ...

  4. MFC弹出菜单隐藏解决

    http://social.msdn.microsoft.com/Forums/en-US/5482103e-272b-4c9f-bac4-be15f14782bd/cmfcmenubar-remov ...

  5. Shadow mapping

    http://www.cnblogs.com/cxrs/archive/2009/10/17/1585038.html 1.什么是Shadow Maping?      Shadow Mapping是 ...

  6. C# 类的访问修改符

    C#共有五种修饰符:public.private.protected.internal.protected internal. ◆public:公有,对所有类可见,不受任何限制 ◆protected: ...

  7. Spring MVC 下index.jsp访问

    spring-mvc.xml配置 <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.we ...

  8. Android WebView保存Cookie登录

    因项目需要,需要在App中嵌入网页,使用Nativie方式登录,然后将cookie保存到WebView中,实现免登录功能.同步Cookie到WebView的方法网上有大量的参考资料,也可以参考下面的代 ...

  9. POJ 1743 (后缀数组 二分) Musical Theme

    看来对height数组进行分段确实是个比较常用的技巧. 题意: 一个主题是可以变调的,也就是如果这个主题所有数字加上或者减少相同的数值,可以看做是相同的主题. 一个主题在原串中至少要出现两次,而且一定 ...

  10. tarjan总结

    先说一下割点跟割边吧. 割桥就是如果一个连通图里删除这条边之后,这个图会变成两个连通图,那么这条边就称之为割桥. 这是割桥的代码,里面呆着lca求法. 割点和割桥的就是用一个时间戳和回到祖先确定. 用 ...