VS 调试断点命中了,程序无法再断点处中断

代码无法命中处理

1.首先确认一下,程序的DLL与源码是否一致,可以编译之后再进行

2.确认是否有公共的文件存储常用的DLL,导致程序没有走最新编译的DLL

3.VS程序调试时会用到 .pdb文件,是否DLL是最新的但是 .pdb文件不是最新的,删掉 .pdb文件

上述问题都确认没有问题,但是断点可以命中,但是就是无法在断点处中断

确认断点是否真的命中了,我调试程序时,使用的是附加进程的调试方式进行调试的,当我已经附加了进程调试后发现再打断点,很容易就命中断点了,但是程序就是不在断点处中断

以前遇到过一次这种问题,请教技术经理都没看出什么问题来,最终我无意间再源码处多加了几行空行再编译突然发现程序能在断点处中断了,这个我猜测是否是当程序没有进行更改代码,

直接冲i重新编译是否有无法更新DLL,但是这一次我又遇到了这种断点命中了,但是就是无法在断点处中断。

不停的尝试,突然发现如果断点是在附加进程之前进行打上了,在附加了进程之后断点,变成空心带黄色的符号,便是其实断点没有命中。但是取消未命中断点,再次在此处打断点(已经附加上进程)的

情况下,发现还是可以命中断点。

  实在没有办法,上网搜索各种答案主要有如下几种答案:

1.取消源码匹配(这种方法,不推荐。这个是给新手用的,就算可以解决断点无法命中的问题,也没有意义,因为程序实际执行的代码和我们看到的不一样,我们也不会知道问题出现在哪。)

附图:

 

 

2.程序进行不在Debug模式下,将程序设置为Debug

附图:

 

 

 

 

按照第二种方式设置后,发现还是不行,无法在断点处中断

 

继续网上搜索答案

 

3.程序设置了代码优化,设置了代码优化将导致调试符号无法加载

附图:

 

 

 进行了这一步后还是无法调试,继续接着改,在我附加进程后,VS下面会有一个输出窗口,上面有一些信息,大概是pdb无法加载,等等

这种情况按下图处理

附图:

 

这样处理后,最后再次附加进程调试,各位你们猜,这次成功没呢?不过我只是附加了进程,但是没有执行程序跳到断点处。我发现在附加进程前打的断点还是无法命中,我取消了上面的启用源服务设置,再次附加进程,发现可以了,最终能够运行了,但是最后我不能再程序处中断到底是什么原因。

posted on 2018-09-11 15:17  牛博客  阅读(4139)  评论(0编辑  收藏  举报