首页 > 解决方案 > 为什么我在尝试调试时偶尔会遇到断点未命中的问题?

问题描述

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

有一份不同的源代码文件的副本。

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

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

标签: c#visual-studio

解决方案


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

  1. 您的调试会话的平台/配置(例如 Debug/x64)与 .exe 或 .dll 编译的体系结构不匹配。或者
  2. 您认为的“干净编译”并不是真正干净的。

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

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


推荐阅读