例如,我有两行代码,每个都调用一个方法。我将在这两行上设置断点。我将运行它一次,它会停在第一个断点处,但不是下一个。我再次运行它,它会命中第二个断点,而不是第一个。
我已经尝试了清理解决方案和重建。
我在解决方案中有多个项目。
你的符号文件(.pdb)可能与你的源代码不同步。这种情况的常见症状包括:
在调试过程中,你不应该看到调试指针停留在空白行上,这表明你的符号/源代码存在不匹配的地方。
这种不匹配还会导致跳过断点,但是清理解决方案通常可以修复它(听起来你已经尝试过了)。
另一个可能性(由其他人提出)是你没有构建一个调试(Debug)配置。虽然可以对发布(Release)构建进行调试,但代码已经被大幅度优化,这可能会导致调试器出现奇怪的行为,例如:
还有一件重要的事情需要注意,就是不能在每一行代码上都设置断点。例如,如果你的代码只有一个变量初始化:
long numObjects;
通常情况下断点不会被正确设置(尽管它通常会移动到“真正”的代码的下一行)。但是,如果你的代码行初始化了变量:
long numObjects = 5;
可以设置断点。
请确保您正在使用调试配置构建应用程序。
此外,移除 VS 可执行文件的兼容模式即可解决该问题。
除了上述方法,我还遇到了另外一些断点无法命中的情况:
trunk
和 branch
目录并且 VS 打开了其他目录中的文件时,我就被这个问题困扰了。mspdbsrv.exe
,请检查您的进程列表。重新启动 Visual Studio 通常可以解决此问题。我曾经遇到过与MS Visual Studio 2008 SP1相同的问题。PDB文件与可执行文件匹配,所以这不是问题。
问题出在Visual Assist
上。我在“工具|插件管理器”中将其关闭,之后就没有跳过断点的问题了。因此,请关闭您在Visual Studio中安装的任何插件并安装最新的SP(现在是SP1)。
我也遇到了同样的问题,安装VS 2010 SP1后问题得到解决。但是这导致了SQL 2008中Intellisense的失效,你可以在这里阅读相关信息:Sql Server 2008 R2 Management Studio - no Intellisense
我曾经遇到过这个问题,不得不安装一个热修复补丁。请参考http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/f3fcb4fb-8a08-4fa0-8d58-9ed6f3eb1193获取详细信息。
我在VS 2008中遇到了同样的问题,尝试了所有方法花费了大约1个小时,但都没有帮助。
最后尝试以非管理员身份运行VS,然后进行“清理解决方案”->“重新生成解决方案”,就可以正常工作了。
不喜欢Win 7上的VS。