Visual Studio 2010 调试器跳过断点

9

在调试过程中,调试器偶尔会出现随机跳过的情况。有时候我在一个函数内部单步调试,但不是跳转到下一行,而是跳到了将来的某个看似随机的地方,有时候甚至是在另一个函数的中途。 但是它总是遵循断点,即如果在将来设置了断点,它永远不会跳过它。

我使用64位Win 7和Visual Studio 2010 Ultimate,没有使用线程。在Visual Studio 2008中从未发生过这种情况。如何解决这个问题?


你使用的是哪种编程语言(原生C++还是基于.NET的语言)?你确定你要进入的函数没有启用优化编译(这可能会使调试器混淆)吗? - Michael Burr
我正在使用vb.net。解决方案配置设置为“调试”,平台为“任何CPU”。 - Michael
使用线程?重要提及。 - Hans Passant
8个回答

5

你是否启用了优化?如果程序高度优化,执行顺序可能会被打乱,事情可能以不总是清晰的方式扩展或重新排列。


4

我在XP机器上使用Visual Studio 2010调试C#程序时遇到了类似的问题。调试器会随机跳转到其他行或下一个断点。

看起来微软已经在SP1中发布了解决此问题的修补程序。


2
我刚刚检查了上面的 Microsoft 链接以获取更新。根据 2010 年 12 月 8 日的帖子,这个问题的修复已经包含在 VS 服务包的 beta 版本中。哈利路亚!现在我只需要等待 SP 最终版本发布,因为我太害怕安装 beta 代码了。 - user171197
遇到了同样的问题。安装了SP1的发布版本,问题得以解决。感谢您发布这个帖子! - Nick Spreitzer
1
更正:它已经修好了。:( - Nick Spreitzer
这个答案对一些人有效 http://stackoverflow.com/questions/12517900/vb-net-debugger-skips-line-for-debugging/12518575#12518575 - PatFromCanada
对我不起作用。Windows Server 2008,Visual Studio 2010 SP1。仍然经常发生。 - Tom W

3

您确定您的代码调用的程序集具有调试符号吗?您可能正在引用以发布模式编译的dll。


3

当调试器运行的pdb文件与您查看的源代码不匹配时,就会发生这种情况。请确保bin目录(或您正在运行的目录)是最新的,并且是从您在调试器中运行的相同源代码构建的。


3
你是使用线程还是后台工作者?当进行调试时,我认为所有线程都会停止,因此可能会在它们之间切换。否则,您可能有过时的调试信息,请删除 bin 和 obj 目录并执行清理编译。

3

如果您的Debug方案配置是最新的,但您尝试在Release配置中调试程序(如果那也不是最新的),则可能会发生这种情况......反之亦然。

您可以使用屏幕顶部绿色“播放”箭头旁边的下拉菜单在Debug或Release配置之间切换运行。


他在使用VB.NET,解决方案配置下拉菜单默认情况下不显示。自定义工具栏以包括它。 - Carl Onager

1
最近我在 Windows 7 32 位上使用 Visual C++ 2008 时遇到了类似的问题。在问题首次出现几分钟前,系统对话框 “VC.exe 遇到问题需要关闭” 显示,但 Visual C++ 窗口似乎幸存了下来。
问题首次出现后,我尝试了多种方式使其重新工作,例如重建解决方案或重启 Visual Studio。然而,它继续表现奇怪:它未能与一个我数周前就没有修改过的对象文件链接,显示 “当前无法命中断点。源代码与原始版本不同。” 等等。
除非我重新启动计算机并最终重建解决方案(两次),否则没有任何帮助。

0

点击重新构建解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接