总结下遇到的几次断点无法命中的情况:
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.确实不会进断点
上面第二种情况至少文件是一份,只不过被修改了不一致
而这种情况往往是文件根本就是两个文件,例如不小心拖了一个同名的文件到VS中,那么就是无法命中断点,需要细心检查
或者编译器会优化代码,有时一些 if 和 if Debug 类似的判断 会导致这一块代码确实不会命中,简单来说,你断点下错地方了