Visual Studio 2008并没有停留在我的所有断点上,当我跨过一个声明时,它常常“逃跑”,为什么?

时间:2010-01-21 10:51:24

标签: .net visual-studio visual-studio-2008 debugging

我经常发现我知道正在执行的代码行上的断点没有正确破坏。
当我执行“跨越”或“进入”等时,它通常也会“逃跑”。

详情。

  • Microsoft Visual Studio 2008版本9.0.30729.1 SP
  • Microsoft .NET Framework版本3.5 SP1
  • 代码是VB.NET和C#的混合,大部分代码都在VB.NET中。
  • 有很多活动线程
  • 很多例外都被软件抛出并被抓住了。
  • Microsoft(R)Windows(R)Server 2003,Standard Edition

团队中的其他一些人在不同的时间看到过这个问题,但有人知道他们是如何解决这个问题的!


更新,考虑所有有用的答案,他们将帮助解决此问题的其他人。

Hotfix KB957912 - Updates for Visual Studio 2008 SP1 debugging and breakpoints

  

微软已发布更新   Microsoft Visual Studio 2008 SP1   调试器组件。这些更新   主要解决与之相关的问题   踩踏和打破断点。

这似乎已经为我排除了问题。

7 个答案:

答案 0 :(得分:4)

少数事情:

  1. 首先使用“清洁溶液”清洁溶液。
  2. 以调试模式运行程序
  3. 删除所有断点并在您打算检查的位置放置断点。
  4. 如果是多线程,您可能会在某个时间停止断点,或者由于代码的其他部分出现断点而可能会延迟。
  5. 确保在放置断点的位置可以访问代码。下面的代码可能不会在else块中引发断点,

    如果(真)

    printf(“Hello world”);

    否则

    printf(“没有你好世界”);

  6. 你会看到代码永远不会成为没有hello世界的一部分。

    这可能听起来很有趣。但是关闭解决方案和visual studio以及删除导向器如释放/调试和重新启动系统可能会有所帮助。

答案 1 :(得分:2)

也许是一个愚蠢的问题而且它不太可能,因为它听起来像你的行为是间歇性的,但我没有看到其他人问过它 - 你检查过以确保你没有任何{{1的程序在它们上设置属性?

答案 2 :(得分:1)

最常见的原因是您的代码已经过优化。您需要一个调试版本来确保生成的可执行文件在运行时保持行的相同行。

答案 3 :(得分:1)

确保您的代码和pdb文件同步。如果发生这种情况,您可能需要清理/重建解决方案。

答案 4 :(得分:0)

如果你有很多线程,那么就会发生这种情况 - 因为多个线程会触发不同的断点。所以保持线程窗口打开,看看你是否仍然在同一个线程上。在这种情况下,带时间戳的跟踪/日志记录可能比在多线程应用程序中逐步执行代码更好。

可能发生这种情况的另一种情况是二进制文件和pdb不匹配。因此,在关闭优化的情况下进行完全重建 HTH

答案 5 :(得分:0)

如果你使用线程会发生这种情况

如果不是,请尝试重建您的应用程序

答案 6 :(得分:0)

Hotfix KB957912 - Updates for Visual Studio 2008 SP1 debugging and breakpoints

  

微软已发布更新   Microsoft Visual Studio 2008 SP1   调试器组件。这些更新   主要解决与之相关的问题   踩踏和打破断点。

这似乎已经为我排除了问题。