最近在调试公司已开发好的项目时遇到一个无法命中断点的问题,试过了网上的许多方法,依旧无法解决,
在这里插入图片描述

后来问了公司另外一位同事,在他的帮助下才得以解决,解决方法如下:
1.检查是否在Debug下,然后是否为Any CPU
2.找到解决方案所在的文件夹,在搜索栏里搜"bin"和"obj"这两个文件夹,并将其删除
注意:由于公司的项目是放在svn上面的在删除了这两个文件夹之后需要更新一下,确保引用的外部组件没被删除
如果怕被误删组件,可以试试这种方法:在搜索栏里面搜 *.cache *.pdb 将其删除,并清理解决方案(其实在清理解决方案的过程中能够删除 *.cache *.pdb这两种文件,只是会存在删除不彻底的情况,因此需要手动删除)
3.运行程序,如果还出现断点未命中的问题,别急!是因为程序还没加载打断点的地方,找到主程序,打个断点试试可不可以命中,可以命中的话就说明已经O了,当调试程序加载到打断点的项目时,断点将被激活;也有小伙伴会说那要是主程序打的断点无法命中呢?嗯~~~这种情况还没遇到过

一般断点不能被命中的原因:
1.调试时使用的是PDB(Program Database)文件,而当我们在类库中修改代码后,由于没有重新编译,会使用上次的PDB文件,这样就造成了原来的PDB和新的代码文件不匹配,自然调试时也就无法正确进入断点。
2.程序还未加载打断点所处的项目( 虚拟存储器 ),在调试过程中,待调试到打断点的项目时,断点自然会被激活

参考文章:
VS调试时断点无法进入或命中的原因及解决方法(PDB引发的)

vs2017 不能命中断点

2、(有时候有效):在代码里面ctrl+a 然后ctrl+k然后ctrl+s:让整个代码自动格式化 3、(最有效):之前是bin文件为输出目录,现在改为bin2文件夹,然后重新生成一下,然后 断点 就可以了 1、问题:想解决: 当前 不会 命中 断点 。源代码与原始版本不同 当您在 Visual Studio 2022 中调试时遇到“ 当前 不会 命中 断点 ,因为尚未为 文档 加载 任何 符号 ”这样的消息时,这通常意味着 Visual Studio 无法找到与您的源代码相关的调试 符号 。 遇到这个问题是我正在用vc2008 调试一个 C++写的Dll,dll在编译中 没有 报错,但在用VB.net写的程序调用此 Dll 时,才会报告 于 "xxx.dll 中找不到 XXX 函数的入口点"。所以我转的对 Dll 断点 调试,结果另一问题:“ 当前 不会 命中 断点 ,还未为 文档 加载 任何 符号 ”。 查找解决办:网点有很多,都不是完美解决问题。其中一个解决办法是: 在 /工具/选项/调试/常规 :取消勾选 "要求源文件与原始版本匹配"。 现在dl可以调试了 ,但“ 当前 不会 命中 断点 ,还未为 文档 加... 在 Visual Studio 中,遇到“ 当前 不会 命中 断点 ,还 没有 为该 文档 加载 任何 符号 ”错误消息,通常意味着调试器未能 加载 项目的调试 符号 (.pdb文件)。 最近cmake编译了一份源码,debug的时候发现部分文件的代码没办法打 断点 ,提示 当前 不会 命中 断点 ,还 没有 为该 文档 加载 任何 符号 ,网上找了一圈,有说在工具 ——> 选项 ——> 调试 ——> 常规,然后取消【启用“仅我的代码”】和【要求源文件与原始版本完全匹配】前面打勾的,尝试了一下,没起作用。觉得我应该是同样的问题,因为我程序用库是在CMAKE_INSTALL_PREFIX路径下生成的dll。解决方法:从生成路径取dll替换掉从CMAKE_INSTALL_PREFIX路径取来的dll即可。 这个问题是MFC中的代码在编译时候 没有 生成调试信息 加载 到你的项目中,微软把有关的调试信息文件放到了服务器上,需要你下载,方法也很简单,在工具->选项->调试-> 符号 中,按照下图选择:(可能选择Microsoft 符号 服务器就可以,我两个都选了)设置好后,在点击viusal studio 菜单栏中的生成:将项目清除,并重新生成项目。在你的程序和MFC程序中设置 断点 (当然你要确定程序能跑到这个 断点 处),重新调试运行。这时候系统会为MFC安装调试 符号 库。如果不关闭,每次 断点 调试都会重新 加载 符号 库,这就很崩溃了。