【问题标题】:Why doesn't VS2010 debugger stop at my breakpoints?为什么 VS2010 调试器不会在我的断点处停止?
【发布时间】:2010-08-23 20:28:45
【问题描述】:

我正在 VS2010 中开发一个 C#.NET 类库项目。在我的项目设置 -> 调试设置中,我将项目设置为启动一个运行非常简单的 jscript 文件 (test.js) 的外部程序 (C:\Windows\SysWOW64\wscript.exe)。该脚本只是创建类的一个实例并调用其中一个方法。

问题是当我开始调试时,VS2010 不会在我的任何断点处停止。如果我在 VS2008 中打开完全相同的项目,它确实会在断点处停止。某处是否有阻止断点被击中的新设置?有没有其他人遇到过这个问题?

【问题讨论】:

  • 您是否有符号,并且您确定源与您正在调试的程序集相同吗?你重建了吗?
  • 如果我更改源,我会在输出中看到更改。是的,我尝试过重建。

标签: visual-studio debugging visual-studio-2010 breakpoints external-process


【解决方案1】:

我的第一个检查是禁用“仅我的代码”

  • 工具 -> 选项
  • 调试器
  • 取消选中“仅启用我的代码”

再次尝试该场景。

【讨论】:

    【解决方案2】:

    通过为正在使用该组件调试的应用程序创建一个配置文件来解决这个问题:

    <?xml version="1.0"?>
    <configuration>
      <startup>
         <supportedRuntime version="v2.0.50727"/>
      </startup>
    </configuration>
    

    通过此文件,您可以告诉调试器使用正确的运行时版本进行调试(似乎调试器默认使用 4.0 版)。

    【讨论】:

      【解决方案3】:

      我尝试了一整天来找出为什么我无法调试我的 Visual Studio 2012 控制台应用程序,结果令人尴尬。

      我在“RELEASE”模式下运行它。

      有时显而易见的东西很难找到。

      【讨论】:

      • 这是为我做的!调试器只停在我代码中的分支(返回和 if 语句),这实际上是非常合乎逻辑的,想想看;这与我的程序的控制流一致。切换到调试模式,修复它!
      【解决方案4】:

      关闭 Visual Studio IDE 并打开它。现在它可以工作了。对我来说,它也面临同样的问题。我用这种方式克服

      【讨论】:

        【解决方案5】:

        我有一个无法调试的“重建”VS2013 项目(没有符号)。最后,我看到优化被选中(项目-> 属性-> 构建)。我取消选中它并重建。符号终于加载了。我的两分钱,只有在绝对必要时才使用(编译)优化。

        【讨论】:

          【解决方案6】:

          虽然我无法回答为什么会这样,但我可以为您提供解决方法。

          1. 包括

            using System.Diagnostics;
            
          2. 在代码的最开头(例如类构造函数)放置以下行:

            #if (DEBUG)
                            while(!Debugger.IsAttached);
                            Debugger.Break();
            #endif
            
          3. 开始调试。

          4. 菜单工具→附加到进程
          5. 附加到您的进程。

          断点应该在您的代码中触发。 其他断点也应该触发。

          【讨论】:

            【解决方案7】:

            可能有多种原因。通常是因为您尝试针对错误的版本进行调试。

            这些操作大约有 80% 的时间有效。

            • 获取最新代码
            • 干净
            • 重建
            • 重启 IIS
            • 再试一次

            如果不好,请转到调试 > Windows > 模块,如果相关的 dll 在那里,请右键单击它并加载符号。

            如果它不在列表中,请尝试运行代码。有时即使它说断点不会被命中,这只是因为在你进入需要它的场景之前没有加载 dll。尝试依赖 dll 的场景,无论如何它可能会碰到断点。

            哦,还有一个想法,重新启动您的浏览器。您可能从较旧的 dll 中缓存了一些内容。

            【讨论】:

              【解决方案8】:

              如果原因是错误的 .NET 运行时版本(这是我的问题),您可以简单地在 附加到进程中选择正确的版本,而不是创建配置文件对话框。

              在对话框中,在附加到旁边点击选择并从自动...调试这些代码类型您应该检查正确的版本。

              如果这也是您的问题,那么您的断点上可能有“未加载符号”消息。选择正确的版本后,您应该会立即看到不再报告此错误。

              【讨论】:

                【解决方案9】:

                对我来说,它是由以下人员修复的:

                1. 打开项目属性是VS2010

                2. 转到编译 -> 高级编译选项

                3. 将“生成调试信息”从“无”更改为“完整”

                【讨论】:

                  【解决方案10】:

                  问题可能是您的浏览器正在使用您正在使用的页面的缓存版本。 尝试在浏览器 f.x 的地址行中添加一些无意义的额外查询字符串。添加 ?NONSENSE=1234 这迫使浏览器使用新版本的网页,因为它不知道页面最终是否应该与此查询不同。下次使用 ?NONSENS=1235。

                  【讨论】:

                    【解决方案11】:

                    我的原生 C++ 代码中有错误的断点问题。 原因是我一直在编辑代码,所以代码中的某些行结尾不是 \r\n。除非您搜索 \r\n,否则无法在代码中看到。 插入正确的行结束后 \r\n 调试器工作。

                    【讨论】:

                      【解决方案12】:

                      我遇到了类似的问题,但它是在 CLR 项目中。我在 CLR 项目中有一些旧的 c++ 语法。对我来说,在工具>选项>调试>常规中启用“使用托管兼容模式”后,它开始遇到断点。

                      【讨论】:

                        猜你喜欢
                        • 2014-04-12
                        • 2023-03-12
                        • 2021-07-21
                        • 2023-03-15
                        • 2015-06-30
                        • 2010-11-25
                        • 2011-07-14
                        • 2013-09-27
                        • 2015-07-17
                        相关资源
                        最近更新 更多