VC编程:VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)
小标 2018-08-14 来源 : 阅读 2496 评论 0

摘要:本文主要向大家介绍了VC编程:VS调试时断点无法进入或命中的原因及解决方法(PDB引发的),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程:VS调试时断点无法进入或命中的原因及解决方法(PDB引发的),通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

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


我在一个项目中引用了自定义的控件MyControl类库,但在使用时发现,有些地方还需要调整,比如这里我需要增加一个GUID作为特殊标识,并输出以供测试。但是当我将这段代码加入进去后,按F5运行程序时,这段代码的断点没有如预期的进入。
注:无法进入的断点是空心的,可以进入的断点是实心的。
于是将鼠标定位到了断点的位置,提示如上图。会发现这是因为源代码与原始版本不同造成的。这时我们可以按照提示中所说的方法来解决试试。
解决方法1:右击断点->位置->允许源代码与原始版本不同<喎�"https://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjxzdHJvbmc+oaPI58/Czbw8L3N0cm9uZz48L3A+CjxwPijXotLi0qrU2rfH1MvQ0Ne0zKzPwtPSu/e2z7Xjo6yyu8i7u+HO3reouPzQwrT6wuspPGJyPgo8L3A+CjxwPjxicj4KPC9wPgo8cD48aW1nIHNyYz0="https://www.2cto.com/uploadfile/Collfiles/20140123/2014012308574675.jpg" alt="\">

但是在实际运行时会发现,此方法并不一定靠谱,因为调试时断点自动往下跳了。这样一来,断点同样会无法进入。
解决方法2:工具->选项->调试->常规->禁用要求源文件与原始版本完全匹配。如下图


这时再运行,断点已经可以正常进入了。
解决方法3:重新生成解决方案或者先清理解决方案再生成解决方案



这时再运行,断点也可以正常进入。
那么为什么会造成这种情况呢?这时因为调试时使用的是PDB(Program Database)文件,而当我们在类库中修改代码后,由于没有重新编译,会使用上次的PDB文件,这样就造成了原来的PDB和新的代码文件不匹配,自然调试时也就无法正确进入断点。
再有前面提到,有时断点会跳到其他的位置,是因为断点是定位在代码的行上的,而PDB文件中记录了代码的行数,但是PDB文件却没有更新,所以当我们强行将断点处的代码设置"允许源代码与原始版本不同"时,如果依旧使用上一次的PDB文件,自然断点的行数就定位到了上次记录的代码行数,所以断点就会往后跳了。
关于PDB的说明可以参看该文https://www.codeproject.com/Articles/349076/Know-Program-Database-file-PDB    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved