【问题标题】:Why does Visual Studio 2008 skip over my break points?为什么 Visual Studio 2008 会跳过我的断点?
【发布时间】:2010-10-13 23:16:02
【问题描述】:

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

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

我已尝试清理解决方案并重新构建。

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

【问题讨论】:

    标签: visual-studio-2008 breakpoints


    【解决方案1】:

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

    【讨论】:

    • 这些建议对我有用(当没有别的方法时)!谢谢!
    • @darkgaze 我并不感到惊讶;发生这种情况的原因有很多,我的解决方案解决了一个特定问题。
    • @GeorgeStocker 是的......我正在努力解决这个问题:stackoverflow.com/questions/22568156/…
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 并且您的调试配置已将 /Od 作为优化(几乎总是如此,但有时它会因意外或其他原因而改变)。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        符号文件不兼容

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

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

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

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

        构建配置

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

        • 单步执行条件(即 if 块)可以使 if 和 else 情况看起来都在运行
        • 部分代码已完全优化,无法中断

        你想突破什么?

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

        long numObjects;
        

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

        long numObjects = 5;
        

        断点可以设置。

        【讨论】:

          【解决方案6】:

          我遇到了这个问题,必须安装一个修补程序。详情见http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/f3fcb4fb-8a08-4fa0-8d58-9ed6f3eb1193

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                【解决方案9】:

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

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

                不喜欢 Win 7 上的 VS

                【讨论】:

                  【解决方案10】:

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

                  【讨论】:

                    【解决方案11】:

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

                    【讨论】:

                      【解决方案12】:

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

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

                      MFR>

                      【讨论】:

                        【解决方案13】:

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

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

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

                        【讨论】:

                          猜你喜欢
                          • 2010-11-15
                          • 1970-01-01
                          • 2014-03-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2012-02-26
                          • 1970-01-01
                          • 2010-10-22
                          相关资源
                          最近更新 更多