为什么我在尝试调试时偶尔会遇到断点未命中的问题



我重新编译了我的解决方案,当它以调试模式启动时,我会在断点周围收到警告,说它不会被命中。

源代码文件的副本不同。

为什么在尝试调试时会加载多个版本的源代码?

我甚至做了一个干净的编译,仍然会得到这个错误。

Visual Studio通常非常善于检测源代码与所附exe或dll进程的代码签名不匹配的情况。所以我怀疑这是两个可能的问题之一:

  1. 调试会话的平台/配置(例如debug/x64(与.exe或.dll编译的体系结构不匹配。或
  2. 你认为的是;干净编译";不是很干净

VisualStudio所知道的唯一源代码就是您面前的源代码。但是,当Visual Studio调试.exe或.dll时,它会使用反射将自己附加到.exe或.dll进程,并分析该.exe/.dll的代码。它确定您的.exe/.dll与要调试的平台/配置不匹配,或者其反射的源代码与Visual Studio IDE中摆在您面前的编写代码不匹配。

当你说你做了一个干净的编译,确保它真的非常干净(不要依赖Visual Studio的"干净"功能。它在所有情况下都不可靠。例如,如果您创建了在编译前或编译后复制内容的生成事件。相反,请删除项目的/bin和/obj文件夹,然后重新编译。这将确保您的二进制文件始终与最新的调试代码匹配。这样做几次,看看是否仍然存在问题。

我在VS 2019中遇到了同样的错误。我用这种方式解决了;

工具->选项->正在调试->General和";要求源文件与原始版本完全匹配";取消选择

最新更新