在使用VS开发时,有时断点会无法进入,特别是在一个项目中引用另一个类库项目时。如下图。

我在一个项目中引用了自定义的控件MyControl类库,但在使用时发现,有些地方还需要调整,比如这里我需要增加一个GUID作为特殊标识,并输出以供测试。但是当我将这段代码加入进去后,按F5运行程序时,这段代码的断点没有如预期的进入。

注:无法进入的断点是空心的,可以进入的断点是实心的。

于是将鼠标定位到了断点的位置,提示如上图。会发现这是因为源代码与原始版本不同造成的。这时我们可以按照提示中所说的方法来解决试试。

解决方法1:右击断点->位置->允许源代码与原始版本不同。如下图

(注意要在非运行状态下右击断点,不然会无法更新代码)

但是在实际运行时会发现,此方法并不一定靠谱,因为调试时断点自动往下跳了。这样一来,断点同样会无法进入。

解决方法2:工具->选项->调试->常规->禁用要求源文件与原始版本完全匹配。如下图

这时再运行,断点已经可以正常进入了。

解决方法3:重新生成解决方案或者先清理解决方案再生成解决方案


这时再运行,断点也可以正常进入。

那么为什么会造成这种情况呢?这时因为调试时使用的是PDB(Program Database)文件,而当我们在类库中修改代码后,由于没有重新编译,会使用上次的PDB文件,这样就造成了原来的PDB和新的代码文件不匹配,自然调试时也就无法正确进入断点。

再有前面提到,有时断点会跳到其他的位置,是因为断点是定位在代码的行上的,而PDB文件中记录了代码的行数,但是PDB文件却没有更新,所以当我们强行将断点处的代码设置"允许源代码与原始版本不同"时,如果依旧使用上一次的PDB文件,自然断点的行数就定位到了上次记录的代码行数,所以断点就会往后跳了。

关于PDB的说明可以参看该文http://www.codeproject.com/Articles/349076/Know-Program-Database-file-PDB

转载于:https://www.cnblogs.com/sparkleDai/p/7605047.html

VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)相关推荐

  1. 上传文件时$_FILES为空,可能的原因及解决方法

    上传文件时$_FILES为空,可能的原因及解决方法 参考文章: (1)上传文件时$_FILES为空,可能的原因及解决方法 (2)https://www.cnblogs.com/i6010/articl ...

  2. SSH连接时出现Host key verification failed的原因及解决方法

    SSH连接时出现Host key verification failed的原因及解决方法 参考文章: (1)SSH连接时出现Host key verification failed的原因及解决方法 ( ...

  3. Qt删除文件夹时父文件夹一并删除的原因与解决办法

    Qt删除文件夹及子文件夹全部文件时父文件夹一并删除的原因与解决办法 初学Qt文件操作,总会先去查阅各种资料,参考各种代码然后一点点地去调试. 我在编写"删除文件夹及子目录与所有文件" ...

  4. php mssql_result 255 string,PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法

    本文实例讲述了PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法.分享给大家供大家参考.具体分析如下: PHP 连接 MSSQL 的新手经常遇到这个问题:数据库里面的 nvarch ...

  5. 启动pip时,< Fatal error in launcher: Unable to create process using ‘“‘ >问题的原因及解决方法

    启动pip时,< Fatal error in launcher: Unable to create process using '"' >问题的原因及解决方法 参考文章: (1 ...

  6. 使用Fastjson解析List对象时出现:{“$ref“:“$.data[0].task.OBJECTS[0]“}的问题原因及解决方法

    使用Fastjson解析List对象时出现:{"$ref":"$.data[0].task.OBJECTS[0]"}的问题原因及解决方法 参考文章: (1)使用 ...

  7. ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法

    ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 参考文章: (1)ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法 (2)ht ...

  8. jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法

    jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 参考文章: (1)jQuery $.post()返回类型为json时不进入回调函数的原因及解决方法 (2)https: ...

  9. 在Openstack上部署compute节点上时,开启服务openstack-nova-compute.service无法启动的解决方法

    在Openstack上部署compute节点上时,开启服务openstack-nova-compute.service无法启动的解决方法 参考文章: (1)在Openstack上部署compute节点 ...

最新文章

  1. 1957模拟计算机,统考计算机作业
  2. C/C++中memset()函数
  3. 开课吧课堂:人工智能行业走向如何?
  4. 2008年6月6日今天终于调回公司本部啦,记录历史的一天。
  5. 【基础】深度学习最常用的10个激活函数!(数学原理+优缺点)
  6. Fiddler工具使用介绍三
  7. STC学习:振动传感器
  8. 155.最小栈(力扣leetcode) 博主可答疑该问题
  9. jQuery插件开发标准写法
  10. graphpad prism怎么添加图例_Graphpad Prism 绘制散点图详细图解
  11. Contelec KL750-5K0/M-SE醉后不知天在水
  12. Find-Sec-Bugs 漏洞范例
  13. MVC中方便的[Authorize],加上这特性,就可以加上登录验证
  14. 如何正确的做技术选型
  15. 计算机美化照片教案,电子相册尝试做教案[大全5篇]
  16. python爬网页上所有的链接(爬到最深)
  17. linux下使用nohup挂后台启动django项目
  18. SAP MM 第一节 后台配置
  19. uniapp 底部菜单_uni-app底部导航栏
  20. Google Scholar英文写作工具使用

热门文章

  1. Android Animation学习(一) Property Animation原理介绍和API简介
  2. 如果安装License失败的解决方案
  3. php分块查找,索引查找(索引查找、分块查找) C语言实现
  4. python集合类型一般应用的场景包括_Python学习,数据类型,python,篇
  5. 文字层一点就变红_《蚂蚁前端研发最佳实践》文字稿
  6. ae运动模糊怎么调整_如何快速成长为一名AE高手?
  7. 0x80070035找不到网络路径_ln -s 创建软链接时的路径问题
  8. 作为开发,你对进程和线程能否区分开来呢?
  9. 船员英语老师是面试还是计算机答题,面试时的英语介绍
  10. 用java实现一个简单远程监控软件_利用java实现一个简单的远程监控程序