4

最近遇到了这个问题...在 VS.Net 2005 中调试应用程序时,断点未连接。错误表示编译的代码与运行的版本不同,因此存在不匹配导致断点断开。

清理所有 bin 文件并重新编译的解决方案无济于事。也不只是发生在一个盒子或一个人身上。

补充说明:此解决方案在 TFS 中用于源代码控制。如果我删除本地 TFS 存储库并从头开始从源代码控制中获取它,有时问题就会消失。我也试过卸载并重新安装 Visual Studio。这有时也有帮助。这两种方法在某些时候都有效,这一事实表明问题不是由任何一种直接引起的。

4

12 回答 12

8

也许这个建议可能会有所帮助:

  1. 在 Visual Studio 中调试时,单击“调试”>“Windows”>“模块”。IDE 将停靠一个 Modules 窗口,显示已为您的项目加载的所有模块。
  2. 查找项目的 DLL,并检查它的符号状态。
  3. 如果它说符号已加载,那么你就是黄金。如果它显示类似无法找到或打开 PDB 文件,请右键单击您的模块,选择加载符号,然后浏览到 PDB 的路径。

我发现有时需要:

  1. 停止调试器
  2. 关闭 IDE
  3. 关闭托管应用程序
  4. 核对 obj 和 bin 文件夹
  5. 重启IDE
  6. 重建项目
  7. 再次浏览“模块”窗口
  8. 浏览到 PDB 文件的位置后,符号状态应更改为已加载符号,您现在应该能够在代码行中设置和捕获断点。

来源:断点当前不会被命中。没有为此文档加载任何符号。

于 2008-10-02T17:48:32.513 回答
1

在选项 -> 调试中,您可以取消选中“要求源文件与原始版本完全匹配”,这可能会有所帮助。

于 2008-10-02T15:53:26.080 回答
1

构建配置是否设置为发布?

您是否引用了设置断点的外部 DLL?

于 2008-10-02T15:54:19.683 回答
1

您是否正在创建一个由外部可执行文件使用的 DLL 项目?您使用的是 .NET 还是 COM?

如果您将 COM 互操作与 .NET 一起使用,则当可执行文件加载 DLL 时,DLL 版本有时会成为问题。例如,如果您的每日构建产生递增的构建号,但您的调试 DLL 的构建号较小,则可执行文件将不会加载调试 DLL。要解决此问题,您需要扫描注册表中的 HKEY_CLASSES_ROOT\CLSID 目录以查找 .NET/COM 组件的 GUID/CLSID。在 InProc32 下,删除版本号高于调试 DLL 的条目。

同样,以上仅适用于 .NET + COM 互操作 DLL。

于 2008-10-02T16:05:37.440 回答
1

我过去也遇到过类似的问题。

解决方法是关闭 Visual Studio 并删除“C:\WINDOWS\Microsoft.NET\Framework{framework version}\Temporary ASP.NET Files”下项目的临时 ASP.NET 生成的程序集文件,然后重新打开项目。

阅读此处的帖子和评论以解决它。

于 2008-10-02T16:47:02.053 回答
0

AviewAnew - 已经应 MS 技术人员的要求这样做了。取消选中需要源文件以匹配版本没有帮助。

Mike L - 配置设置为调试,现在有外部 DLL。使用除框架引用之外的所有本地项目。

于 2008-10-02T15:59:42.477 回答
0

您确定 .pdb 文件与您正在运行的可执行文件位于同一文件夹中吗?确保两个文件的最后修改日期匹配,并且 VS 附加到该 exe(而不是其他)。

于 2008-10-02T16:00:17.250 回答
0

您是否有以任何方式触及您的二进制文件的后期构建步骤?如果是这样,这可能会使调试器感到困惑,并使您的符号看起来与您的 exe/dll 不匹配,因为大小/时间戳不正确。

于 2008-10-02T16:07:16.720 回答
0

在过去,我有时发现关闭编译器优化可以解决“丢失”断点,因为优化器已经(正确地)确定代码没有被调用,并将它们从编译版本中删除。

这听起来确实是一个不同的问题,但可能值得确保在调试模式下关闭优化。[项目/属性,构建设置选项卡]

于 2008-10-02T16:07:52.163 回答
0

确定代码上没有 Debug 属性会阻止代码在应用程序的任何位置被调试,例如 DebuggerHidden 或 DebuggerStepThrough?

于 2008-10-02T17:14:29.943 回答
0

您可以单步执行代码直到断点行,而不是运行并等待它命中吗?你可以单步执行代码吗?

于 2008-10-02T17:26:12.693 回答