VS如何在调试时进入到dll文件

背景:

    项目A:用C#写的一个类库文件
  项目B:引用项目A的dll文件,完成编码,也是C#编写的。

  需求:怎么能在调试的时候,调试断点能够从项目B中进入项目A中的代码。

解决办法就是:

  假设,项目B引用的项目A的dll文件是 a.dll ,并且a中没有引用项目A中其他的文件或者命名空间。如果a.dll中还引用了A项目下的其他命名空间的内容,如a2,那么在下面的操作也要包含a2的对应部分。

  将项目A下A.Web文件夹下bin文件夹(即路径:A/A.Web/bin/ )下的 a.dll与a.pdb文件,同时拷贝到B项目的外部引用文件夹下。这个"同时" 的含义是保证dll与pdb文件是同一个版本的。也就是说,你不能用时间点1的dll配合时间点2的pdb文件来进行调试进入dll的操作。如果a中还引用了a2命名空间的内容,那么必须也将a2.dll与a2.pdb文件同时拷贝过去,这个同时的含义同上。并且这个a2与a也是同时的。

  这些准备好了之后,B项目中重新生成,在B项目中,在你引用a.dll中函数的地方加断点,单步调试即可进入A项目中对应的被调函数。

表达上可能有含糊或者不准确的地方,还请批评指正。

实例说明:

  在PMCost项目中,部分代码如下,19行红色框内的函数引用自ACore项目中的Common命名空间下AjaxMethodAttribute.cs,我们知道,在生成dll的时候AjaxMethodAttribute.cs下的函数会被包含在ACore.Common.dll下。

  并且AjaxMethodAttribute.cs中只引用了system及其两个子类,并没有引用 PMCost项目下的其他自定义命名空间。所以在拷贝的时候只需要拷贝ACore.Common.dll 及ACore.Common.pdb即可。

将两个文件拷贝到PMCost项目的外部引用中,在函数调用位置之前加断点,单步调试即可进入dll中。

原文地址:https://www.cnblogs.com/dyhao/p/9781208.html

时间: 2024-10-11 01:35:22

VS如何在调试时进入到dll文件的相关文章

调试带有源代码的DLL文件

工作环境:dll源代码是c,在Visual studio 2010中调试. 第一步,调试的准备. 用C#语言编写一个测试dll文件的程序,由于dll源程序是c的,且运行结果是黑屏的,所以C#代码也是运行在黑屏的console环境下.完整代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; na

安装PHP时出现MSVCR110.dll 文件丢失问题解决

在运行 php.exe 时,运到"无法启动此程序,因为计算机中丢失 MSVCR110.dll.尝试重新安装该程序以解决此问题."的提示,当时很无语,因为系统是刚刚安装好的,而且是最新版本的. 有问题就得解决,网上查询了很多的资料,都要把 msvcr110.dll 文件下载过来放到 C 盘的 syste32 文件夹里去,笔者也试了,但是都无法解决. 因为现在所有的 5.5 环境都是基于 vc11 的编译脚本下生成的,所以在 windows 下你得安装相关组件. 下面笔者就简单的分享一下是

msdia80.dll文件出现在磁盘根目录下的解决方案(转)

情况描述: 当安装某些软件后,磁盘根目录中多出了msdia80.dll文件,该文件显示为2006年12月1日,884KB. 原因: 当使用64位操作系统时,在电脑上安装 Microsoft Visual C++ 2005 可再发行组件时,  Msdia80.dll文件被安装在启动驱动器的根文件夹中. 解决方案:将此文件放到合适的位置,并注册此dll即可. 1. 将Msdia80.dll 文件移动到 C: \Program Files\Common Files\Microsoft Shared\V

msdia80.dll文件出现在磁盘根目录下的解决方案

情况描述: 当安装某些软件后,磁盘根目录中多出了msdia80.dll文件,该文件显示为2006年12月1日,884KB. 原因: 当使用64位操作系统时,在电脑上安装 Microsoft Visual C++ 2005 可再发行组件时,  Msdia80.dll文件被安装在启动驱动器的根文件夹中. 解决方案:将此文件放到合适的位置,并注册此dll即可. 1. 将Msdia80.dll 文件移动到 C: \Program Files\Common Files\Microsoft Shared\V

解决VS调试时断点不会命中

断点调试是VS中的一大利器,有了它我们可以快速定位到代码的问题所在.在某些情况下会导致设置了断点后程序无法在断点处停下,下面分4种情况来解决断点不会命中的问题 百度经验:jingyan.baidu.com 方法/步骤 1 1,检查VS的调试模式.VS的调试分为两种,Debug和Release.Debug是专门真对检查程序的bug而设置的一种模式.Release模式对程序的编译进行了优化,一般用于程序发布.首先确保是在Debug模式下设置的断点. 步骤阅读 2 2,检查设置断点的模块在调试时有没有

(转)VS2010启动调试时老是提示正在下载公共符号

  VS2010启动调试时老是提示正在下载公共符号,下载一些.dll文件,点取消后也能继续调试,但特别慢. 解决方法:工具—选项,或者调试—选项和设置,将调试下的“启用 .NET Framework 源代码单步执行 "前面的对勾去掉就行.

VS调试时不加载符号

加载符号,能够让调试时进入系统的dll中,甚至能达到汇编语言的深度,让你调试时能够逐行进行.但是加载符号的话,会使得每次调试,增加进入到首个断点的时间. 而且有时候也非必要加载符号,它的取消可以使用下面的方式进行. 原文地址:https://www.cnblogs.com/arxive/p/8336947.html

Win10下装 VC6.0单步调试报((OLE32.DLL): 0xC0000005: Access Violation)

想在win10上重温下经典VC++6.0,结果单步调试时弹出个异常对话框,报((OLE32.DLL): 0xC0000005: Access Violation) 解决方法如下: 1.菜单 工具->选项 中的调试,反汇编下的来源注解取消 2.点确定保存设置,然后即可单步调试3.再将工具->选项 中的调试,反汇编下的来源注解勾上 原文地址:https://www.cnblogs.com/yilang/p/12530750.html

解决真机调试时Eclipse DDMS上打不开/data目录的问题

一般真机调试时DDMS里面的File Explorer是不能打开/data 目录的,不过也很容易解决. 1.首先手机要root.这个很简单,网上一大堆资料和软件. 2.仅仅root之后还不行,下载一个ES 文件浏览器(或类似的软件),授予该软件root权限. 3.然手在ES 里面找到/data 目录,修改它的属性.把它的读.写.执行的权限全部开放出来. 然后就大功告成了.