VS 断点不会命中的情况

总结下遇到的几次断点无法命中的情况:

1.手误设置为release模式

如果是release模式的情况下,断点跳转命中情况是无法预知的,所以请修改成debug

2.与源文件不一致

这个情况是最常见的,很多网上的教程都叫大家在设置中 把“要求源文件和原始版本完全匹配”选项禁用,

这是没错的,甚至连VS都提示我们,可以去掉这个选项来保证断点命中进行调试,但是这样治标不治本,不是我们想要的

引起这个的真正原因其实是:

断点所在的代码 是属于一个被编译成dll (lib、exe) 之类的库工程,然后主程序引用了这个dll.

但是在F5运行时,只编译了主程序和相关依赖的选项,并没有重新编译dll这个工程,

然而我们又修改了这个dll工程中的某些代码,并下了断点想调试,那么此时VS就会提示断点无法命中。

因为主程序依赖的dll还是旧的dll ,并没有重新生成,但是dll中的代码文件又被修改了,所以断点才无法命中,如果能命中那才奇了怪了

解决方法:

1.就是在启动项目处右键,Build Dependencies ->Project Dependencies ,选择要一起编译的项目。重新F5就可以了。
2.或者手动选择断点所属工程,右键,build/rebuild 即可

 

3.确实不会进断点
上面第二种情况至少文件是一份,只不过被修改了不一致

而这种情况往往是文件根本就是两个文件
编译器会优化代码,有时一些判断或者分支会导致这一块代码确实不会命中,简单来说,你断点下错地方了

 

posted @ 2018-12-11 17:10  birdhumen鸟人  阅读(794)  评论(0编辑  收藏  举报