c# - 为什么我在尝试调试时偶尔会遇到断点未命中的问题?
问题描述
我重新编译了我的解决方案,当它以调试模式启动时,我在断点周围收到此警告,说它不会被命中。
有一份不同的源代码文件的副本。
为什么在尝试调试时会加载多个版本的源代码?
我什至做了一个干净的编译,仍然得到这个错误。
解决方案
Visual Studio 通常非常擅长检测源代码何时与附加的 exe 或 dll 进程的代码签名不匹配。所以我怀疑这是两个可能的问题之一:
- 您的调试会话的平台/配置(例如 Debug/x64)与 .exe 或 .dll 编译的体系结构不匹配。或者
- 您认为的“干净编译”并不是真正干净的。
Visual Studio 知道的唯一源代码就是您面前的源代码。但是,当 Visual Studio 调试 .exe 或 .dll 时,它会将自身附加到 .exe 或 .dll 进程,使用反射并分析该 .exe/.dll 的代码。它确定您的 .exe/.dll 与您要调试的平台/配置不匹配,或者其反映的源代码与 Visual Studio IDE 中您面前的书面代码不匹配。
当您说您进行了干净编译时,请确保它真的很干净(不要依赖 Visual Studio 的“干净”功能。它并非在所有情况下都可靠。例如,如果您创建了复制的构建事件内容预编译或后编译。相反,删除项目的 /bin 和 /obj 文件夹,然后重新编译。这将确保您的二进制文件始终与您的最新代码匹配以进行调试。这样做几次,看看您是否仍然遇到问题.
推荐阅读
- android - 当初始化改造我得到错误:KotlinNullPointerException
- bash - Bash函数是否可以将值输出到文件描述符,然后仅将其分配给变量?
- c# - <>0 和 >0 之间哪个布尔求值最快?
- swift - 从未调用过锻炼构建器和锻炼构建器DidCollectEvent
- events - Datadog 事件监视器聚合
- java - 如何在 REACT 的表单字段中获取正确的 DateTime?
- javascript - 如何在径向量规上创建刻度标记和等距?
- android - Google Place api 未提供搜索结果
- jquery - jquery在数据分页后无法在表上工作
- amazon-web-services - SSH 执行远程命令 infacmd.sh 失败