5

我正在运行带有 SP1 的 Visual Studio 2008。当我调试应用程序时,它会跳过我的断点。

例如,我有两行代码,每行调用一个方法。我将在两条线上都设置一个断点。我会运行一次,它会在第一个断点处停止,但不会在下一个断点处停止。我将再次运行它,它会击中第二个,而不是第一个。

我试图清理解决方案并重建。

我在解决方案中有多个项目。

4

13 回答 13

17

符号文件不兼容

您的符号文件(.pdb) 可能与您的源代码不同步。这种情况的一个常见症状是:

  • 在一行代码的断点处停止
  • 单步执行代码
  • 看到调试指针停在空白代码行

调试时,您永远不会看到调试指针停在空白行上,这表明您在某处存在符号/源不匹配。

这种不匹配也可能导致断点被跳过,就像你看到的那样,但是清理解决方案通常会修复它(听起来你已经尝试过了)。

构建配置

另一个选项(正如其他人所建议的那样)是您没有构建调试配置。虽然可以调试 Release 版本,但代码经过显着优化,这会使调试器行为异常,例如

  • 单步执行条件(即 if 块)可以使 if 和 else 情况看起来都在运行
  • 一些代码被完全优化了,你不能破坏它们

你想打破什么?

另一件需要注意的重要事情是,不能在每一行代码上都设置断点。例如,如果您的代码只有一个变量初始化:

long numObjects;

断点通常不会正确设置(尽管它通常会移动到“真实”代码的下一行)。但是,如果您的代码行初始化变量:

long numObjects = 5;

可以设置断点。

于 2009-03-17T23:05:15.500 回答
6

尝试删除该项目的 .SUO 文件,然后重新构建。

于 2009-03-17T22:57:25.753 回答
3

确保您正在使用调试配置构建应用程序。

于 2009-03-17T22:59:26.637 回答
1

假设符号加载不是问题,您可以在方法本身上放置一个 BP,并验证它确实被调用了两次(通过检查调用堆栈)。

于 2009-03-17T22:58:59.463 回答
1

我遇到了这个问题,不得不安装一个修补程序。有关详细信息,请参阅http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/f3fcb4fb-8a08-4fa0-8d58-9ed6f3eb1193

于 2009-10-20T12:13:55.803 回答
1

我在使用 MS Visual Studio 2008 SP1 时遇到了同样的问题。PDB 文件匹配可执行文件,所以这不是问题。

问题是Visual Assist。我在“工具|加载项管理器”中将其关闭,之后跳过断点就没有问题了。因此,请关闭 Visual Studio 中的所有加载项并安装最新的 SP(现在是 SP1)。

于 2011-01-14T10:22:37.563 回答
1

除了上述方法之外,我还遇到了另外几种没有命中断点的情况:

  • 源来自不同的目录树。如果您重命名了目录,则可能会发生这种情况,因为路径被硬编码到 pdb 文件中。当我有一个trunkbranch目录交换并且VS在另一个目录中打开文件时,这让我感到困惑。
  • 如果 exe 仍在后台运行,如果应用程序没有完全退出或mspdbsrv.exe仍以某种方式附加到它,有时可能会发生这种情况,因此请检查您的进程列表。重新启动 Visual Studio 通常可以解决此问题。
于 2011-02-15T17:47:01.723 回答
1

我在 VS 2008 中遇到了同样的问题,并尝试了大约 1 小时的所有操作,但没有帮助。

最后尝试在没有管理员权限的情况下运行 VS,然后清理解决方案-> 重建解决方案并运行良好。

不喜欢 Win 7 上的 VS

于 2011-12-10T01:36:01.290 回答
1

此外,删除 VS 可执行文件在兼容模式下运行可以解决问题。

于 2011-12-15T14:09:26.310 回答
1

我遇到了同样的问题,安装 VS 2010 SP1 解决了这个问题。我在 SQL 2008 中破坏了 Intellisense 的副作用,您可以在此处阅读:Sql Server 2008 R2 Management Studio - no Intellisense

于 2013-05-08T13:46:43.960 回答
0

如果断点没有显示为实心红色气泡,而是显示为红色圆圈,则它被禁用。如果它是带有黄色小警告标志的红色圆圈,则您所附加的进程尚未加载该模式的符号。确保您尝试调试正确类型的代码(托管/本机/T-SQL/脚本)。

于 2009-03-17T23:03:55.783 回答
0

我猜您将项目更改为优化代码,因此没有可用的调试信息(包括使用断点的能力)。

要更正此问题:打开您的项目,单击菜单->项目->(您的项目)属性...,单击编译选项卡,单击高级编译选项,然后: - 取消选择“启用优化” - 在生成调试信息列表中,选择“完整”。- 单击确定,关闭并保存所有内容。现在应该可以工作了。

生产效率>

于 2014-07-27T22:27:33.590 回答
0

对于网站,如果 MSVS 的单独实例正在运行同一网站,则可能会发生这种情况。

只需停止原始实例或停止 IIS Express。

MSVS 似乎启动了第二个网站,而没有抱怨在同一端口上运行的预先存在的网站。可能浏览器中显示的页面实际上是第一个网站。

于 2016-09-15T17:57:47.893 回答